我有一个函数(searchTerm),它应该从两个URL中同时获取数据,并在两个调用完成后显示结果。无法从并行ajax调用中检索数据
这是工作正常,当我在.when
只有一个参数调用(比如$.ajax(options1)
),
但我需要从两个并行输出,我在.then
调用这两个网址,并记录响应数据1和数据2函数,但现在在ajax调用完成后它不会被调用。
任何人都可以告诉我在这种方法中是否正确吗?如果是这样,那么为什么回调没有得到执行?
var searchTerm = function() {
var $a = $(this);
var term = $("#searchbox").val();
var options1 = {
url: "someurl1",
contentType: "application/json",
data: JSON.stringify({
searchString: term
}),
type: "post",
dataType: "html"
};
var options2 = {
url: "someurl2",
contentType: "application/json",
data: JSON.stringify({
searchString: term
}),
type: "post",
dataType: "html"
};
$.when($.ajax(options1), $.ajax(options2)).then(function(data1, data2) {
alert("callbacks finished");
});
信息1:
似乎任何Ajax调用我指定为第一个参数与500服务器错误而失败。我尝试交换options1和options2,现在使用options2的调用失败。
信息2:
我所提到的选项1和选项2点在同一个控制器中的操作的方法和一部分的URL,他们都返回(的ActionResult)对象的awaitable任务。这可能是这里的问题吗?这些调用是通过异步请求以某种方式阻止/中断对方的?
信息3:
试图提供更多的细节的工作。的动作方法的定义是这样的 -
public async Task<ActionResult> someurl1(.....){
...
...
return await View(...);
}
可以尝试.done而不是.then,看看它是否工作? – Sunand 2014-09-03 20:02:38
我确实尝试过,但没有任何影响。 – Sam 2014-09-03 20:04:48
你检查网络标签是否都是返回成功的请求? – Sunand 2014-09-03 20:08:38