我从早上开始就还在做 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");
}
},