I try to receive a PHP response in my JavaScript.
My PHP looks like this:
some code if(...) echo "1"; else echo "2";
JavaScript:
function GetChoice() {
var returned="";
$.ajax({
async: false,
cache: false,
url: "http://mydomain.com/script.php",
type: "POST",
dataType:"text",
success: function(data) {
returned = data;
}
});
return returned;
}
var r = GetChoice();
alert(r);
But GetChoice() returns nothing. What's wrong?
UPD: It works if javascript and php script are on the same server. My scripts in different domains.
-
1If you use Firefox Firebug then you can check in the Net tab if you are getting any ajax responseskos– skos2012年05月02日 08:18:31 +00:00Commented May 2, 2012 at 8:18
-
Post your real php code where you check $_POST paramsDenis Ermolin– Denis Ermolin2012年05月02日 08:18:41 +00:00Commented May 2, 2012 at 8:18
-
Why are you using an absolute path? Is it from the same server?Shikiryu– Shikiryu2012年05月02日 08:38:44 +00:00Commented May 2, 2012 at 8:38
-
If you use FF or Chrome you can use the development tools, then see what the response is that is being returned from your server. $.ajax should log a request in the "network" tab in developer tools (Chrome). Click on the request and then click on response to see what the server sent back. Maybe your server isn't sending anything back?Jacques Koekemoer– Jacques Koekemoer2015年04月08日 09:20:58 +00:00Commented Apr 8, 2015 at 9:20
6 Answers 6
Try this :
temp1.php
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
function GetChoice() {
var returned = "";
$.ajax({
async: false,
cache: false,
type: "POST",
url: "http://localhost/temp2.php",
data: { name: "John"}
}).done(function( msg ) {
returned = msg;
});
return returned;
}
var r = GetChoice();
alert(r);
</script>
temp2.php
<?php
echo $_REQUEST["name"];
?>
its working....!
1 Comment
try this:
function GetChoice() {
var returned = "";
$.ajax({
async:false,
cache:false,
url:"http://mydomain.com/script.php",
type:"POST",
dataType:"text",
success:function (data) {
alert(data);
}
});
}
2 Comments
The problem is, in your example, $.ajax returns immediately and the next statement, return result;, is executed before the function you passed as success callback was even called. Here is explanation. How do I return the response from an asynchronous call?
Luck,
1 Comment
GetChoice() will return nothing before the callback in success runs.
The callback, which is the function you define as the success paramater will not fire until the data have been requested from the server.
This is asyncronous (the A in AJAX) so the rest of the code with continue causing the GetChoice() function to return before the callback has been run
1 Comment
async: falsethis is the script
<script type="text/javascript">
$.ajax({
async:false,
cache:false,
url:"http://path.com/to/file",
type:"POST",
dataType: "html",
data: 'data',
success: function(data){
alert(data);
}
});
and in your PHP file write this code
<?php
function test()
{
$str = 'This is php file';
return $str;
}
echo test();
?>
Make sure the path to the php file is correct AND add the script in another PHP file. Basically you need 2 files. Just tested this in my editor and works ..
Comments
function GetChoice() {
var returned="";
$.ajax({
url: "../script.php",
type: "POST",
success: function(data) {
returned = data;
}
});
return returned;
}
var r = GetChoice();
alert(r);