0

我在访问 JSON 数据时遇到问题。我是 JSON 和 jquery 的新手,所以可能有一个简单的解决方案,我很高兴知道。

我的 jQuery:

  $.post(
    "currentPage.php",
    { 
    'currentPage': 1
    },
    function(data){
      $("body").append(data);  
    }
  );

当前页面.php:

$returnArray['left'] = 'test_left';
$returnArray['right'] = 'test_right';

$returnArray['numLeft'][] = 1;
$returnArray['numRight'][] = 2;
$returnArray['numRight'][] = 3;

print json_encode($returnArray);

我试图访问这样的数据:

data.left
data['left']

但它返回空白,如何访问 HTML 文件中的数据的最佳方式?

4

3 回答 3

2

我可能是错的,但我不认为该post方法假定数据返回类型为 json。您可以通过将 ajax 函数更改为:

  $.post(
    "currentPage.php",
    { 
    'currentPage': 1
    },
    function(data){
      $("body").append(data);  
    },
    "json"
  );
于 2010-04-12T13:28:41.743 回答
1

在 JQuery 中,您需要将返回数据类型 ( dataType) 设置为,json以便函数知道期望和处理的数据类型。从手册:

“json”:将响应评估为 JSON 并返回一个 JavaScript 对象。在 jQuery 1.4 中,JSON 数据以严格的方式解析;任何格式错误的 JSON 都会被拒绝并引发解析错误。(有关正确的 JSON 格式的更多信息,请参阅 json.org。)

您可以使用完整的$.ajax()调用来执行此操作,也可以使用$.getJSON()。没有返回 JSON 的 HTTP POST 快捷方式(即 $.postJSON 不存在),但您可以将dataType参数提供给$.ajax()或只是将参数添加到$.post(). 当你有一个JSON对象时,使用它json.keyName来访问数据。

$.ajax({
    url: "currentPage.php",
    data: { 
        'currentPage': 1
    },
    dataType: "json",
    type: "post",
    success: function(data) {
        $("body").append(data);  
    }
});
于 2010-04-12T13:28:32.433 回答
1

提供您希望获得的数据类型作为.post()方法的参数(在您的情况下json):

$.post("currentPage.php",{'currentPage': 1},
  function(data){
    $("body").append(data);  
  },
  'json'     // <-- add the expected datatype
);

我认为默认是将结果视为 HTML。阅读文档

jQuery.post(网址,[数据],[成功(数据,textStatus,XMLHttpRequest)],[数据类型])

url包含请求发送到的 URL 的字符串。

数据与请求一起发送到服务器的映射或字符串。

success(data, textStatus, XMLHttpRequest)请求成功时执行的回调函数。

dataType服务器预期的数据类型。

于 2010-04-12T13:28:38.097 回答