Ajax方法总是进入错误函数。
Ajax方法总是进入错误函数。
我有一个简单的ajax方法:\n
$.ajax({ type: 'POST', url: 'http://localhost:1195/widget/postdata', datatype: "jsondata", async: false, success: function (data) { alert("ok") }, error: function (data) { alert(data.status + ' ' + data.statusText); } });
\n以及C#中的这个简单方法:\n
[HttpPost] public JsonResult PostData() { return Json("1"); }
\n当我检查检查器控制台时,我在响应中看到\"1\",但我的ajax方法总是进入错误函数。\n为什么会这样呢?
问题的出现原因是在AJAX调用中,dataType应该是"json"而不是"jsondata"。此外,在url调用中应使用.Action标记和正确的url格式。解决方法是更正dataType为"json",并使用正确的url格式。
以下是一个小测试的例子,使用了与您发布的控制器方法相同的AJAX调用,我得到了正确的结果:
$(document).ready(function() { $("#button_1").click(function(e) { e.preventDefault(); $.ajax({ type: "POST", url: '.Action("PostData", "Home", null, Request.Url.Scheme)', dataType: "json", async: false, success: function(result) { alert(result); }, error: function(error) { alert(error); } }); }); });
输出结果:
[图片链接](https://i.stack.imgur.com/Myu8p.png)
即使这样也无法解决我的问题,因为它引用了本地url。尝试使用重载的.Action方法:.Action("postdata", "widget", null, Request.Url.Scheme)。更多信息请参考:stackoverflow.com/questions/434604/…
问题不在于url。问题是请求在目标服务器接收到,但响应在源服务器接收到,但AJAX方法仍然进入错误函数。
我已经创建了一个示例项目,其中使用了与您相同的AJAX调用和控制器方法。我从中获得了正确的响应。请参阅更新后的答案。您是否有接收到的错误响应片段?
您是否可以将ajax方法发送到另一个网址?假设您的应用程序域名是aaa.com,您能否从aaa.com向bbb.com发送AJAX请求并接收数据?
上述示例假设您的ActionMethod在同一个项目中。如果您想从不同域调用外部API,那么您需要在Controller中使用HttpClient,或者直接调用并获取响应。您能否向我展示您要调用的外部API?
由于您正在调用外部API,可能ajax调用返回的数据与dataType: "json"不匹配。您能否向我展示您收到的错误响应?