如何使用 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.responseText
)
replyVal = 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?