【问题标题】:Parsing PHP/JSON data in Javascript在 Javascript 中解析 PHP/JSON 数据
【发布时间】:2012-06-05 14:26:14
【问题描述】:

我正在尝试将 AJAX、JSON 与 PHP 通信,然后 PHP 返回一些数据,我正在尝试使用 Javascrpt 对其进行解析。

从php,我返回的服务器,

    echo json_encode($data); 

    // it outputs ["123","something","and more something"]

然后在客户端,

success : function(data){

    //I want the data as following

    // data[0] = 123
    // data[1] = something
    // data[3] = and more something
}

但是,它给出了;

        data[0] = [ 
        data[1] = " 
        data[2] = 1

它正在读取每个字符,但我想要数组中的字符串,而不是单个字符。这里发生了什么?在此先感谢,我是 Javascript 和 JSON、AJAX 的新手。

【问题讨论】:

    标签: php javascript ajax json


    【解决方案1】:

    JSON.parse(data) 应该可以解决问题。

    【讨论】:

      【解决方案2】:

      我不确定这是否是你想要的,但你为什么不希望 php 以这种格式返回它:

      {'item1':'123','item2':'something','item3':'and more something'}
      

      要实现这一点,您需要确保json_encode() 的数组是关联的。 它应该是下面的形式

      array("item1"=>123,"item2"=>"something","item3"=>"more something");
      

      如果数组中的某些值可能是 URL,您甚至可以继续执行 stripslashes()

      然后您可以对 JSON 字符串执行 JSON.parse() 并访问值

      希望这有帮助!

      【讨论】:

        【解决方案3】:

        您没有显示解析数据的函数。但是你应该使用

        JSON.parse
        

        如果 broser 不支持 JSON,则使用来自 https://github.com/douglascrockford/JSON-js 的 json polyfill

        dataArray = JSON.parse(dataFomXHR);
        

        【讨论】:

          【解决方案4】:

          检查这个...应该可以工作

          成功:函数(数据){

          var result = data;
          
          result=result.replace("[","");
          
          result=result.replace("]","");
          
          var arr = new Array();
          
          arr=result.split(",")
          
          alert(arr[0]); //123
          
          alert(arr[1]); //something
          
          alert(arr[2]); //......
          }
          

          【讨论】:

          • 如果没有任何效果,我正在考虑这样做,但作为最后的选择.. 谢谢。 :)
          【解决方案5】:

          将 ajax 调用的 dataType 属性设置为 json。然后 jQuery 会自动将您的响应转换为对象表示。

          $.ajax({
              url : ...,
              data : ...,
              dataType : "json",
              success : function(json) {
                  console.log(json);
              }
          });
          

          另一种选择是在 PHP 中设置标头,以便 JQuery 了解您发送的是 JSON 对象。

          header("Content-Type: application/json");
          echo json_encode($data);
          

          【讨论】:

            猜你喜欢
            • 2012-11-14
            • 1970-01-01
            • 2010-10-02
            • 2016-03-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-10-08
            相关资源
            最近更新 更多