我有一个返回JSON或XML的API。我正在尝试使用jquery显示来自AJAX调用的原始XML响应。我已经使用JSON.stringify
通过JSON响应成功完成了此操作。当我尝试使用XML时,我不确定。
这是我的JQuery AJAX代码:
function fire_ajax_get() {
$("#btn-list").prop("disabled", true);
$.ajax({
type: "GET",
url: "films",
accepts: {
text: "application/xml"
},
cache: false,
success: function (event, xhr) {
//var json = "<div class=\"alert alert-success\" role=\"alert\">"+ JSON.stringify(data, null, 4) +"</div>";
var xml = "<div id=\"insert-box\" class=\"alert alert-success\" role=\"alert\">"+xhr.responseXML+"</div>";
$('#listFilms').html(xml);
$("#btn-list").prop("disabled", false);
},
error: function (e) {
var feedback = "<div id=\"insert-box\" class=\"alert alert-warning\" role=\"alert\"></div>"
$('#listFilms').html(feedback);
console.log("ERROR : ", e);
$("#btn-list").prop("disabled", false);
}
});
}
上面注释掉的行对于JSON(变量名已更改)也很好用,并在HTML div
中输出以下内容:
[
{
"id": 1,
"name": "Into The Wild",
"year": "1997",
"genre": "Drama/Adventure",
"director": "Sean Penn"
},
{
"id": 2,
"name": "Titanic",
"year": "2007",
"genre": "Drama/Disaster",
"director": "James Cameron"
},
{
"id": 3,
"name": "Rise of the Footsoldier",
"year": "2008",
"genre": "Drama/Docudrama",
"director": "Julian Gilbey"
}
]
对于XML,我只得到undefined
作为输出
如果我将代码更改为
success: function (data) {
var xml = "<div id=\"insert-box\" class=\"alert alert-success\" role=\"alert\">"+data+"</div>";
$('#listFilms').html(xml);
$("#btn-list").prop("disabled", false);
}
然后我得到[object Object], [object Object]...
作为输出。
我要做的就是在HTML代码中将原始XML数据作为字符串输出。
像这样
<List>
<item>
<id>1</id>
<name>Into The Wild</name>
<year>1997</year>
<genre>Drama/Adventure</genre>
<director>Sean Penn</director>
</item>
<item>
<id>2</id>
<name>Titanic</name>
<year>2007</year>
<genre>Drama/Disaster</genre>
<director>James Cameron</director>
</item>
<item>
<id>3</id>
<name>Rise of the Footsoldier</name>
<year>2008</year>
<genre>Drama/Docudrama</genre>
<director>Julian Gilbey</director>
</item>
<List>
我要去哪里错了?我已经阅读了jQuery文档(https://api.jquery.com/ajaxSuccess/),看起来我做得正确。我已经搜索了XML.Stringify,但无济于事。
任何提示将不胜感激:)
答案 0 :(得分:0)
阅读您的问题和有关此问题的评论似乎显示<
和>
字符时出现问题。在Javascript中,您可以通过以下方式实现:
escape('<test>somecontent</test>')
当然,您可以在此处使用自己的XML。
答案 1 :(得分:0)
直接将xml添加到您的Ajax https://api.jquery.com/jquery.ajax/
“
dataType
(默认值:Intelligent Guess(xml,json,脚本或html)) 类型:字符串您期望从中返回的数据类型 服务器。如果未指定任何内容,则jQuery将尝试根据 响应的MIME类型(在1.4中,XML MIME类型将产生XML JSON将产生一个JavaScript对象,在1.4脚本中将执行 脚本,其他任何内容都将以字符串形式返回)。可用 类型(结果作为第一个参数传递给您的成功 回调)是:“ xml”:返回可以通过jQuery处理的XML文档。
所以放
dataType:"xml",
不是
accepts: {
text: "application/xml"
},
现在只接受xml
success: function (xmldata) {
现在,我将展示如何将xml作为文本放入。
function dothings() {
var jqxhr = $.ajax({
type: "GET",
url: "films",
dataType: "xml",
cache: false
})
.done(function(dataxml, textStatus, jqXHR) {
var xml = "<div id='insert-box' class='alert alert-success' role='alert'>" + dataxml + "</div>";
$('#listFilms').text(xml);
$("#btn-list").prop("disabled", false);
})
.fail(function(jqXHR, textStatus, errorThrown) {
var feedback = "<div id='insert-box' class='alert alert-warning' role='alert'>" + textStatus + "</div>"
$('#listFilms').html(feedback);
console.log("ERROR : ", errorThrown);
$("#btn-list").prop("disabled", false);
});
}
// just to show the xml ust .text
let x = `<List>
<item>
<id>1</id>
<name>Into The Wild</name>
<year>1997</year>
<genre>Drama/Adventure</genre>
<director>Sean Penn</director>
</item>
<item>
<id>2</id>
<name>Titanic</name>
<year>2007</year>
<genre>Drama/Disaster</genre>
<director>James Cameron</director>
</item>
<item>
<id>3</id>
<name>Rise of the Footsoldier</name>
<year>2008</year>
<genre>Drama/Docudrama</genre>
<director>Julian Gilbey</director>
</item>
<List>`;
$('#listFilms').text(x);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="listFilms">empty</div>