我从早上开始就在使用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。
答案 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");
}
},