Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用jQuery Ajax时,返回的JSON似乎混淆了_Php_Jquery_Ajax_Json_Api - Fatal编程技术网

Php 使用jQuery Ajax时,返回的JSON似乎混淆了

Php 使用jQuery Ajax时,返回的JSON似乎混淆了,php,jquery,ajax,json,api,Php,Jquery,Ajax,Json,Api,我有一个php脚本,它有以下行: echo json_encode(array('success'=>'true','userid'=>$userid, 'data' => $array)); 它返回以下内容: { "success": "true", "userid": "1", "data": [ { "id": "1", "name": "Trigger", "image": "", "subtit

我有一个php脚本,它有以下行:

echo json_encode(array('success'=>'true','userid'=>$userid, 'data' => $array));
它返回以下内容:

{
"success": "true",
"userid": "1",
"data": [
    {
        "id": "1",
        "name": "Trigger",
        "image": "",
        "subtitle": "",
        "description": "",
        "range1": null,
        "range2": null,
        "range3": null
    },
    {
        "id": "2",
        "name": "DWS",
        "image": "",
        "subtitle": "",
        "description": "",
        "range1": null,
        "range2": null,
        "range3": null
    }
]
}

但当我调用jQuery ajax时,如下所示:

$.ajax({
    type: 'POST',
    url: 'url',
    crossDomain: true,
    data: {name: name},
    success: function(success, userid, data) {

      if (success = true) {
         document.write(userid);
         document.write(success);
       }
   }
});
userid
是“success”。实际的
成功
一个人起作用,它的
正确

是否返回格式不正确的数据?还是仅仅是我的代码

提前感谢,,
所有成功回调所采用的参数都在中定义:

响应在作为参数传递给它之前不会被拆分。必须从第一个参数中提取值

您还需要将
头('Content-Type:application/json')
添加到PHP中,以便jQuery在填充第一个参数时将响应解析为json而不是HTML

然后,您可以测试
数据.success
并访问
数据.userid
(以及
数据.data
,该数组将被分配给返回数据中的
数据
属性…您可能希望重命名它以避免混淆)


请注意,当您测试它时,您需要使用
==
(或
=
),而不是您当前使用的*assignment*运算符。还请注意,JSON响应返回的是字符串
“true”
,而不是布尔值true

成功回调所采用的参数定义在:

响应在作为参数传递给它之前不会被拆分。必须从第一个参数中提取值

您还需要将
头('Content-Type:application/json')
添加到PHP中,以便jQuery在填充第一个参数时将响应解析为json而不是HTML

然后,您可以测试
数据.success
并访问
数据.userid
(以及
数据.data
,该数组将被分配给返回数据中的
数据
属性…您可能希望重命名它以避免混淆)


请注意,当您测试它时,您需要使用
==
(或
=
),而不是您当前使用的*assignment*运算符。还要注意的是,JSON响应返回的是字符串
“true”
,而不是布尔值
true

您不能在
Success
中添加自己的参数。像这样更改代码

success: function(response) {

      if (response.success == true) { 
         document.write(response.userid);
         document.write(response.success);
       }
   }
根据jQuery文档中的
success()

成功(数据、文本状态、jqXHR)

请求成功时要调用的函数。函数传递三个参数:从服务器返回的数据,根据dataType参数格式化;描述状态的字符串;和jqXHR(在jquery1.4.x中,XMLHttpRequest)对象。从jQuery1.5开始,success设置可以接受一系列函数。每个函数将依次调用


您不能在
Success
中添加自己的参数。像这样更改代码

success: function(response) {

      if (response.success == true) { 
         document.write(response.userid);
         document.write(response.success);
       }
   }
根据jQuery文档中的
success()

成功(数据、文本状态、jqXHR)

请求成功时要调用的函数。函数传递三个参数:从服务器返回的数据,根据dataType参数格式化;描述状态的字符串;和jqXHR(在jquery1.4.x中,XMLHttpRequest)对象。从jQuery1.5开始,success设置可以接受一系列函数。每个函数将依次调用


其他问题-
success=true
。你的意思可能是
success==true
,但应该是
success
。顺便说一句,这就是为什么你从不写
==true
。对不起,我在输入问题时输入了错别字-
success=true
。你的意思可能是
success==true
,但应该是
success
。顺便说一句,这就是为什么你从来不写
==true
。对不起,我在打问题的时候打错了