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

时间:2012-08-18 22:03:17

标签: php ajax json

我从早上开始就在使用AJAX,所以也许这就是为什么有些东西不能正常工作的原因 - 让我们忘记吧。总而言之,我的问题与通过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:i get:

{"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ń”

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

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

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

2 个答案:

答案 0 :(得分:0)

我认为你误解了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

答案 1 :(得分:0)

您可以在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");
            }
        },

如果您无法更改dataType,则可以在输出中调用$.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");
            }
        },