实际上我正在尝试使用数据阵列发送ajax
调用。这是我的示例代码,criteria
是一个数组,但是当我发送此调用时,它不会返回任何数据。但当我尝试使用PHP它完美的工作。这是我的示例php
代码
$post = array('criteria'=>array('user_id'=>'user1','subject'=>'meeting'));
$fields = (is_array($post)) ? http_build_query($post) : $post;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://mydomain/task/find');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$serverOutput = curl_exec ($ch);
curl_close ($ch);
error_log('>>>>>>>>>>>>>>>>'.$serverOutput);
那么关注代码的错误是什么?如何使用ajax
发送数组?请帮我。
$.ajax({
type: "POST",
url: "http://mydomain/task/find",
data: { "criteria" : [{'user_id':'uesr1'},{'subject':'meeting'}]},
success: function(data) {
if (data.status) {
alert('ok');
}
},
dataType: 'json',
});
实际上这适用于像这样的单个元素
$.ajax({
type: "POST",
url: "http://mydomain/task/find",
data: { "criteria" : [{'user_id':user1}]},
success: function(data) {
if (data.status) {
}
},
dataType: 'json',
});
答案 0 :(得分:0)
尝试使用此语法
data:({
criteria :[{
user_id: "user1",
subject:"meeting"
}]
})
答案 1 :(得分:0)
当多维数组传递给http_build_query
时,它以独特的方式运行,并且在javascript中不存在(使用json编码的对象发送复杂数据更常见)
PHP代码的等效数据对象如下:
data: { "criteria[user_id]" : "uesr1", "criteria[subject]" : "meeting" },
php.js
库得到了用JavaScript编写的php函数的等价物:http://phpjs.org/functions/http_build_query/
php文档中有一个例子:
<?php
$data = array('user'=>array('name'=>'Bob Smith',
'age'=>47,
'sex'=>'M',
'dob'=>'5/12/1956'),
'pastimes'=>array('golf', 'opera', 'poker', 'rap'),
'children'=>array('bobby'=>array('age'=>12,
'sex'=>'M'),
'sally'=>array('age'=>8,
'sex'=>'F')),
'CEO');
echo http_build_query($data, 'flags_');
?>
生成的POST数据(url已解码并包装以便更好地理解):
user[name]=Bob Smith
& user[age]=47
& user[sex]=M
& user[dob]=5/12/1956
& pastimes[0]=golf
& pastimes[1]=opera
& pastimes[2]=poker
& pastimes[3]=rap
& children[bobby][age]=12
& children[bobby][sex]=M
& children[sally][age]=8
& children[sally][sex]=F
& flags_0=CEO
正如您所看到的那样,使用用于标识级别的括号来展平数组,在jQuery中将同一对象传递为data
会产生如下内容:
user={"name": "Bob Smith", "age": "47", "sex"="M", "dob": "5/12/1956"}
& passtimes=["golf", "opera", "poker", "rap"]
& children={"bobby": { "age": "12", "sex": "M"}, "sally": { "age": "8", "sex": "F"}
& flags_0="CEO"
如果您不知道用于编码POST数据的格式,请参阅wikipedia article on POST它写得很好。