jQuery ajax request with json response, how to?

2022-08-30 10:34:58

我正在发送一个带有两个post值的ajax请求,第一个是“action”,它定义了我的php脚本必须解析的操作,另一个是“id”,它是它必须解析脚本的用户的id。

服务器在 array() 内返回 6 个值,然后使用 PHP 函数编码为 JSON:json_encode();

我的一些响应是HTML,但是当我将其编码为JSON时,它会转义,因此它成为
我如何禁用它?"/""\/"

另外,当我收到服务器响应时,我不知道如何在jQuery中显示它时,我只是认为将其全部放入div中只会显示我请求的数字和HTML代码,但它会在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?


答案 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

注意:

此处的答案适用于那些尝试将属性设置为甚至得到错误响应类型的人。在服务器中定义 可以更正问题,但如果返回或任何其他类型,则该方法应将其转换为 。我用旧版本的jQuery进行测试,只有在版本之后,才会强制将任何内容类型转换为通过的类型。因此,如果您遇到此问题,请尝试更新jQuery版本。$.ajaxdataTypejsonheader('Content-type: application/json');text/html$.ajaxjson1.4.4$.ajaxdataType


答案 2

首先,如果您将PHP的标头设置为提供JSON,这将有所帮助:

header('Content-type: application/json');

其次,这将有助于调整您的ajax调用:

$.ajax({
    url: "main.php",
    type: "POST",
    dataType: "json",
    data: {"action": "loadall", "id": id},
    success: function(data){
        console.log(data);
    },
    error: function(error){
         console.log("Error:");
         console.log(error);
    }
});

如果成功,您收到的响应应被选为真正的 JSON,并且应将对象记录到控制台。

注意:如果你想学习纯html,你可能需要考虑使用另一种方法来JSON,但我个人建议使用JSON并使用模板(例如Handlebars js)将其呈现为html。


推荐