使用jQuery $ .when和$ .then来处理多个不返回响应文本的ajax请求

时间:2016-02-23 03:06:02

标签: jquery json ajax xml

基本上我想使用jQuery从XML和JSON提要中返回数据,并且只有在两者都成功时才使用console.log数据。

如果我在getRoomFeed() n中注释$.whe,它将返回XML的正确responseText对象,但是如果我将它们都留在那里,则返回文档对象时我console.log(rateData)。为什么我不能从JSON和XML中提取数据并从两者中获取responseText?当我在$.when中使用这两个Feed时,为什么会得到不同的结果?

请参阅随附的codepen并检查下面的控制台或代码,

function getRoomFeed() {
 return $.ajax({
type: "GET",
url: "JSONURLHERE.json",
dataType: "JSON"
 });
};

 function getRates() {
  return $.ajax({
type: "GET",
url: "XMLURLHERE.xml",
dataType: "XML"
 });
};

$('#prop__selector').on('change', function() {
  getPropCode = $(this).val();
  $.when(getRoomFeed(), getRates()).then(function(roomData, rateData) {
console.log(roomData);
console.log(rateData);
    }); 
 });

http://codepen.io/benweiser/pen/gPNVmd/

我附上了图片,但不幸的是我不得不将其删除,因为我没有足够的声誉。

1 个答案:

答案 0 :(得分:0)

它运行得很好,但是你在每个响应中得到$.ajax的三个参数,所以你需要做

console.log(roomData[0]);
console.log(rateData[0]);

当jQuery在添加dataType时解析内容时,JSON已经被解析为一个对象,而XML被解析为document,这可能就是你所看到的文档。