如何通过JSON将HTML从PHP传递到AJAX - 正确


How to pass HTML via JSON from PHP to AJAX - properly

我从早上开始就还在做 AJAX 的东西,所以也许这就是为什么有些事情在 schould 时不起作用的原因 - 让我们忘记它。总而言之,我的问题与通过 JSON 传递 HTML 重合。PHP 代码的示例:

$list = "<strong>This is test</strong>";
$response = array('success'=>true, 'src' => $list);
echo json_encode($response); 

基本上,这是负责将HTML传递给AJAX的代码的主要部分。现在,让我们看一下 AJAX 代码的一部分:

            success: function(output)
            {
                alert(output);
                json = $(output).find(".content").text();
                var data = $.parseJSON(json);
                if(data.success == true)
                {
                   obj_a.parents(".row").append(data.src);
                   obj_a.attr("id", "rollBack");
                   obj_a.text("Roll back");
                }
            },

你们中的一些人会问我在这一部分做什么:

json = $(output).find(".content").text();

答案是:我从".content"框中检索 json 字符串,所以当我提醒变量"json:我得到:

{"success":true,"src":"1. dsfasdfasdffbcvbcvb<'/span>Edytuj<'/span> <'/a>Usu 'u0144<'/span><'/div>2. vbnvbnm454t<'/span>Edytuj<'/span><'/a>Usu'u0144<'/span><'/div>3. ndfhgndgfhndfhgndfhd<'/span>Edytuj<'/span><'/a>Usu'u0144<'/span><'/div><'/div>"}

问题是我没有得到这个 HTML...我只得到任何HTML标签,样式等的文本...

我得到的字符串,而不是 HTML:"1. dsfasdfasdffbcvbcvbEdytujUsuń2.vbnvbnm454tEdytujUsuń3.ndfhgndgfhndfhgndfhdEdytujUsuń"

请不要试图在上面的字符串中寻找任何聪明或 gunius 的东西,因为你不会 - 它只是一个测试字符串。

根据PHP代码的一部分 - 在我的情况下,我得到"这是测试"而不是"这是测试"。

总结一下我的问题是,如何通过json将这些HTML标签或整个HTML代码从PHP传递到AJAX。

我认为

你误解了jQuery.ajax()的工作原理。 你只需要告诉它dataType: 'json'(这意味着你期待来自服务器的 JSON 输出),它会处理其余的工作。 您不需要使用 jQuery.parseJSON() . success()方法将获得一个表示服务器响应的 JavaScript 对象。

        success: function(output)
        {
            // output is a JS object here:
            alert(output.success);  // true
            // ...
        },

要从该点获取 HTML,您只需访问 output.src .

您可以在 ajax 请求中指定dataType: 'json',并在成功调用中接收一个对象(即已经解析的 json)。

例如
$.ajax(url, {
    dataType: 'json',
    success: function(output)
        {
            if(output.success == true)
            {
               obj_a.parents(".row").append(output.src);
               obj_a.attr("id", "rollBack");
               obj_a.text("Roll back");
            }
        },

如果无法更改数据类型,则会在输出时调用$.parseJSON

 function(output)
        {
            alert(output);
            var data = $.parseJSON(output);
            if(data.success == true)
            {
               obj_a.parents(".row").append(data.src);
               obj_a.attr("id", "rollBack");
               obj_a.text("Roll back");
            }
        },