Jquery获取数组细节

时间:2010-04-26 18:06:23

标签: php jquery json

我无法从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。

5 个答案:

答案 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" );