jquery - Ajax 返回文本,而不是 html
问题描述
我有一个完整的代码,用于通过带有 JSON 数据类型的 Jquery AJAX 从 PHP 获取值。但是ajax完成后,它不响应html。它成为文本。
结果变成了这样。
$("#category li").one('click', function() {
var catId = $(this).attr("id");
var that = this;
$.ajax({
type: 'GET',
url: '<?php echo base_url()."dashboard/getsubcategory/"; ?>'+catId,
dataType: 'html',
data: { category: catId},
beforeSend: function() {
$("#loader").show();
}
})
.done(function(data){
var categories = JSON.parse(data)
$.each(categories, function(k,category) {
that.after('<li class="collection-item">'+category.id+'</li>');
});
})
.fail(function() {
alert( "Fetch failed." );
});
});
JSON输出:
[
{
"id": "7",
"name": "Blazer & Suits"
},
{
"id": "8",
"name": "Blouses & Shirts"
},
{
"id": "9",
"name": "Friendly URL in CodeIgniter"
}
]
为什么它返回:
<li class="collection-item">7</li>
<li class="collection-item">8</li>
<li class="collection-item">9</li>
我期望的输出是
<li class="collection-item">7</li>
<li class="collection-item">8</li>
<li class="collection-item">9</li>
预习 :
请帮忙 ..
非常感谢。
解决方案
您将引用元素的变量存储在变量中,并使用它附加到文档中。您应该在之后调用方法之前包装元素。
此外,在您的 ajax 调用中,当您似乎期望一个json时,您将值dataType设置为html。
因此,总结起来,您的代码应如下所示:
$("#category li").one('click', function() {
var $that = $(this);
var catId = $that.attr("id");
$.ajax({
type: 'GET',
url: '<?php echo base_url()."dashboard/getsubcategory/"; ?>'+catId,
dataType: 'json',
data: { category: catId},
beforeSend: function() {
$("#loader").show();
}
})
.done(function(data) {
data.forEach(function(category) {
$that.after('<li class="collection-item">'+category.id+'</li>');
});
})
.fail(function() {
alert( "Fetch failed." );
});
});
推荐阅读
- laravel - 投票系统中的警告消息或重定向
- c - 递归函数背后的魔力是什么?
- javascript - VBA 抓取包含在 Javascript 中的 Web 数据
- php - Laravel - 如何将图像文件添加到 Firebase 云存储?
- libcurl - libcurl C没有将字符串引号放在Content-Type标头的边界中以进行多部分案例
- python - 不支持的操作数类型,但找不到错误
- c++ - 在使用 boost::asio 时得到了 receive_from: Bad file descriptor
- c# - 如何捕获 UnhandledException 无法捕获的异常
- javascript - 批量上传到 Odoo (OpenERP)
- lucene - 检查索引(Lucene)中不区分大小写的搜索