如何使用 jQuery AJAX 和 PHP 数组返回 [重复]

Posted

技术标签:

【中文标题】如何使用 jQuery AJAX 和 PHP 数组返回 [重复]【英文标题】:How to work with jQuery AJAX and PHP array return [duplicate] 【发布时间】:2013-02-25 00:29:00 【问题描述】:

我有一个类似的 jquery ajax 请求;

$.ajax(
    type: 'POST',
    url: 'processor.php',
    data: 'data1=testdata1&data2=testdata2&data3=testdata3',
    cache: false,
    success: function(result) 
      if(result)
        alert(result);
      else
        alert("error");
      
    
);

处理程序processor.php 被设置为返回一个类似的数组;

$array = array("a","b","c","d");
echo $array;

我想基于此在客户端执行操作。假设数组 [0] 是“b”,我想提醒“嗨”。同样,如果数组 [2] 是“x”,我想提醒“你好”,依此类推。如何过滤数组元素以获取它们的数据?

【问题讨论】:

【参考方案1】:

您必须返回以 json 形式编码的数组,如下所示

$array = array("a","b","c","d");
echo json_encode($array);

然后您可以在 javascript 中访问它,并将其转换回一个数组/对象,例如

var result = eval(retuned_value);

您还可以使用 for 循环浏览所有数组元素

for (var index in result)
    // you can show both index and value to know how the array is indexed in javascript (but it should be the same way it was in the php script)
    alert("index:" + index + "\n value" + result[index]);


在您的代码中,它应该类似于:

PHP 代码:

$array = array("a","b","c","d");
echo json_encode( $array );

jQuery 脚本

$.ajax(
    type: 'POST',
    url: 'processor.php',
    data: 'data1=testdata1&data2=testdata2&data3=testdata3',
    cache: false,
    success: function(result) 
      if(result)
        resultObj = eval (result);
        alert( resultObj );
      else
        alert("error");
      
    
);

【讨论】:

-1 不需要使用eval 我得到了它与 eval 一起使用,但没有 eval 就无法使用。我的 php 脚本也没有设置为任何特定的标题,如 HMR 在下面的答案中所说的。【参考方案2】:

从 php 返回 JSON http://php.net/manual/en/function.json-encode.php

并且在 javascript 中从 json 字符串创建一个对象,您可以使用 getJSON 而不是 ajax 来做到这一点 http://api.jquery.com/jQuery.getJSON/

确保你的 php 设置正确的响应头:

 header ("content-type: application/json; charset=utf-8");

【讨论】:

【参考方案3】:

我找到了将数组从 php 返回到 Ajax (jscript) 的最佳方法:

在 php 方面:echo json_encode($myArray); 在 javascript 方面(例如myAjax.responseTextreplyVal = JSON.parse(myAjax.responseText);

要从 javascript 将数组发送到 php,请使用匹配的 JSON.stringify() 发送 和 php json_decode() 接收

【讨论】:

【参考方案4】:

在您的 PHP 代码中将数组编码为 JSON 对象

echo json_encode($array);

然后您需要将 JSON 对象转换为 Javascript/jQuery 兼容的对象。之后您可以转换回数组

$.ajax(
      success: function(result) 

      jq_json_obj = $.parseJSON(result); //Convert the JSON object to jQuery-compatible

      if(typeof jq_json_obj == 'object') //Test if variable is a [JSON] object
        jq_obj = eval (jq_json_obj); 

        //Convert back to an array
        jq_array = [];
        for(elem in jq_obj)
            jq_array.push(jq_obj[elem]);
        
        console.log(jq_array);
      else
        console.log("Error occurred!"); 
      
    
);

【讨论】:

【参考方案5】:
$.ajax(  
    type: 'POST',  
    url: 'processor.php',//please return in json  
    dataType : 'json',//to get data in json   
    data: 'data1=testdata1&data2=testdata2&data3=testdata3',  
    cache: false,  
    success: function(result)   
      if(result.array.length > 0)  
        for(var i=0;i<result.array.length;i++)  
            if(result.array.[i]== 'a')  
               //do somthing..  
               //here, you can use switch case too...  
              
          
        
      
);

【讨论】:

以上是关于如何使用 jQuery AJAX 和 PHP 数组返回 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Ajax 和 JavaScript,如何在不使用 JQuery 的情况下发布数组?

PHP-AJAX:如何通过 php/json 数组从查询中填充 jquery 数据表

如何使用 PHP 和 Ajax 将数组传递给 Javascript?

将 PHP 数组传递给外部 jQuery $.ajax

通过 for 循环和 php 数组进行多次插入(通过 jQuery AJAX 接收)

jQuery - 在 AJAX POST 之后访问 PHP 数组值