gpt4 book ai didi

javascript - 无法从并行 ajax 调用中检索数据

转载 作者:行者123 更新时间:2023-11-30 06:53:26 24 4
gpt4 key购买 nike

我下面有一个函数 (searchTerm),它应该同时从两个 URL 获取数据并在两个调用完成后显示结果。

当我在 .when(例如 $.ajax(options1))中仅使用一个参数调用时,这工作正常,

但是因为我需要并行输出,所以我在 .then 函数中调用 URL 和记录响应 data1 和 data2,但现在在 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:
我在 options1 和 options2 中提到的 url 指向同一 Controller 中的操作方法,它们都返回 (ActionResult) 对象的可等待任务。这可能是这里的问题吗?这些调用是否以某种方式通过异步请求相互阻塞/中断?

信息 3:
尝试提供更多细节以供使用。 Action 方法的定义是这样的 -

public async Task<ActionResult> someurl1(.....){
...
...
return await View(...);
}

最佳答案

通过后面所有的调用调试,终于找到了答案。我从两个操作方法中调用了一个通用函数,该函数使用全局变量进行外部 URL 调用。简单地使用下面的锁定机制使我的关键部分线程安全。

public static object Lock = new object();

lock (Lock) // added for thread safety purpose
{
response_task = CallExtern(...)
}

关于javascript - 无法从并行 ajax 调用中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25652669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com