Reputation: 1355
I tried to do something like this :
var msg = $.get("my_script.php");
I thought msg would be set to the text returned by my_script.php,i.e. the responseText of the jqXHR object. It apparently doesn't work like that as msg is always set to "[object XMLHttpRequest]"
Is there a quick 1 line way to do what I want?
Thanks.
Upvotes: 13
Views: 46663
Reputation: 1355
After some testing, I ended up finding a solution.
I need the call to be synchronous, $.get shorthand function is always asynchonous, so I will need to use $.ajax, like this:
var msg = $.ajax({type: "GET", url: "my_script.php", async: false}).responseText;
I don't think there is a better way to do this, thanks for your answers.
Upvotes: 37
Reputation: 967
You can always use:
var msg;
$.get("my_script.php", function(text) {
msg = text;
});
If for some reason the response is text, the remote script might be changing the content-type to something like JSON, and thus jQuery tries to parse the string before outputting to you.
Upvotes: 7
Reputation: 9619
The return value is simply the jqXHR object used for the ajax request. To get the response data you need to register a callback.
$.get("my_script.php", function(data) {
var msg = data;
alert(msg);
});
Upvotes: 2
Reputation: 160191
The response text is available in the success callback; do what you need to do with it there.
Upvotes: 1