一尘不染

带有json响应的jQuery ajax请求,如何执行?

php

我正在发送一个带有2个post值的ajax请求,第一个是“ action”,它定义了我的php脚本必须解析的动作,另一个是“
id”,它是要为其解析脚本的用户的ID。
服务器在array()中返回6个值,然后使用PHP函数将其编码为JSON:json_encode();
我的一些响应为HTML,但是当我将其编码为JSON时,它会转义,"/"因此"\/"
如何禁用它?

当我不知道如何在获得服务器响应时在jQuery中显示此消息时,我只是认为将其全部放入div只会显示我所请求的数字和HTML代码,但它将按原样显示数组用PHP编码。

的PHP

$response = array();
$response[] = "<a href=''>link</a>";
$response[] = 1;
echo json_encode($response);

jQuery的:

$.ajax({
    type: "POST",
    dataType: "json",
    url: "main.php",
    data: "action=loadall&id=" + id,
    complete: function(data) {
        $('#main').html(data.responseText);
    }
});

如何使它能够工作JSON?


阅读 225

收藏
2020-05-29

共1个答案

一尘不染

您需要致电

$.parseJSON();

例如:

...
success: function(data){
       var json = $.parseJSON(data); // create an object with the key of the array
       alert(json.html); // where html is the key of array that you want, $response['html'] = "<a>something..</a>";
    },
    error: function(data){
       var json = $.parseJSON(data);
       alert(json.error);
    } ...

请参阅
http://api.jquery.com/jQuery.parseJSON/

如果仍然有斜杠的问题:搜索security.magicquotes.disabling.php
或:
function.stripslashes.php

注意:

此答案适用于那些尝试$.ajaxdataType属性设置为json,甚至响应类型错误的人。header('Content-type: application/json');在服务器中定义可以解决此问题,但是如果您要返回text/html或任何其他类型,则该$.ajax方法应将其转换为json。我做一个测试与旧版本的jQuery和唯一版本后1.4.4$.ajax力的任何内容类型转换为dataType通过。因此,如果您有此问题,请尝试更新jQuery版本。

2020-05-29