我无法从Jquery ajax调用中获得响应...
(这是一个验证用户身份的脚本,需要返回他们的名字和用户ID。我的理解是我可以将其编码为JSON并以下面的格式获取数据。
警告()会返回“undefined”错误。
javascript
$.ajax({
type: "POST",
url: "myURL.php",
data: {username: username, password: password},
success: function(results) {
//THIS IS WHERE THE PROBLEM IS
alert('Hi '+results.name); //Should be "Hi Basil Fawlty"
}
});
PHP(myURL.php)
//This comes from a SQL call that returns the following name
json_encode(array(
'id'=>1,
'name'=>'Basil Fawlty'
));
我将非常感谢您对我出错的任何帮助或想法!
感谢。
解决方案:解决方案是添加dataType。
答案 0 :(得分:4)
你错过了dataType: "json"
:
$.ajax({
type: "POST",
url: "myURL.php",
dataType: "json",
data: {username: username, password: password},
success: function(results) {
//THIS IS WHERE THE PROBLEM IS
alert('Hi '+results.name); //Should be "Hi Basil Fawlty"
}
});
如果你知道你正在获得JSON,那么另一个(不那么详细)的替代方案是jQuery.getJSON
。
答案 1 :(得分:3)
如果你正在使用jQuery< 1.4,您必须指定dataType: "json"
。
从1.4开始,dataType默认为:
智能猜测(xml,json,脚本, 或者html)
但是这要求响应头包含字符串“json”。所以你要发送:
header('Content-type: application/json');
这种新增的dataType灵活性允许处理程序响应多个返回的类型。
如果问题仍然存在,您需要提醒整个回复alert(results);
以查看实际返回的内容。
这里有很多类似的答案。不知道是谁开始了它,但无论谁毫无疑问都入侵了波兰。
答案 2 :(得分:1)
确保将dataType
设置为JSON,以便在success方法中获取响应对象,如下所示:
$.ajax({
type: "POST",
url: "myURL.php",
dataType: "json",
data: {username: username, password: password},
success: function(results) {
alert('Hi '+results.name);
}
});
Details for dataType
can be found here
或者,you can do this:
$.getJSON( "myURL.php", {username: username, password: password},
function(results) {
alert('Hi '+results.name);
});
答案 3 :(得分:1)
我的猜测是你期待JSON,但是你得到了一个字符串。
答案 4 :(得分:1)
您需要在请求中指定dataType,如下所示:
$.ajax({
type: "POST",
url: "myURL.php",
data: {username: username, password: password},
dataType: "json",
success: function(results) {
//THIS IS WHERE THE PROBLEM IS
alert('Hi '+results.name); //Should be "Hi Basil Fawlty"
}
});
或者您可以使用
从php设置内容类型header( "Content-Type: application/json" );