1
votes

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.

6
If you use Firefox Firebug then you can check in the Net tab if you are getting any ajax responseskos
Post your real php code where you check $_POST paramsDenis Ermolin
Why are you using an absolute path? Is it from the same server?Shikiryu
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

6 Answers

2
votes

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
votes

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);
        }
    });
}
1
votes

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,

0
votes

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

0
votes

this 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 ..

0
votes
function GetChoice() {
    var returned="";
    $.ajax({
        url: "../script.php", 
        type: "POST",
        success: function(data) { 
            returned = data;
        }
    });
    return returned;
}

var r = GetChoice();
alert(r);