0

从早上起我仍然在使用 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:我得到:

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

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

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

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

4

2 回答 2

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.

于 2012-08-18T22:13:33.387 回答
0

您可以dataType: 'json'在您的 ajax 请求中指定并在您的成功调用中接收一个对象(即已解析的 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");
            }
        }, 
于 2012-08-18T22:14:01.703 回答