【问题标题】:Access json data from php从php访问json数据
【发布时间】:2010-04-12 13:21:21
【问题描述】:

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

我的 jQuery:

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

currentPage.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 文件中的数据的最佳方式?

【问题讨论】:

  • 您不想在哪里访问这些数据?在 php 或 js 方面?

标签: javascript php jquery json http-post


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    jQuery.post( url, [ data ], [ success(data, textStatus, XMLHttpRequest) ], [ dataType ])

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

    dataA 随请求发送到服务器的映射或字符串。

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

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

    【讨论】:

      【解决方案3】:

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

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

      您可以通过完整的$.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);  
          }
      });
      

      【讨论】:

      • 没有捷径的说法不完全正确,可以将数据类型作为参数提供给post()
      猜你喜欢
      • 2018-06-16
      • 2016-01-14
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多