Jquery JSON调用后错误函数
我有一个jquery post调用,它调用了error函数,尽管它将数据输入到数据库中非常好Jquery JSON调用后错误函数,jquery,asp.net-mvc,json,Jquery,Asp.net Mvc,Json,我有一个jquery post调用,它调用了error函数,尽管它将数据输入到数据库中非常好 <script type="text/javascript"> $(document).ready(function () { $("#ExtMailCreate").click(function () { var url = '@Url.Action("Create")'; var data = JSON.string
<script type="text/javascript">
$(document).ready(function () {
$("#ExtMailCreate").click(function () {
var url = '@Url.Action("Create")';
var data = JSON.stringify(SaveExternalMail());
$.ajax({
type: "POST",
url: url,
data: data,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
$("#result").append("pass");
},
error: function (data) {
$("#result").append("error");
}
});
});
});
function SaveExternalMail() {
var costcentrecode = $("#CostCentreCode").val();
var day = $("#ExtMailDatePicker").val();
var externalMailItemID = $("#ExternalMailItemID").val();
var externalMailLocationID = $("#ExternalMailLocationID").val();
var quantity = $("#Quantity").val();
return {
CostCentreCode: costcentrecode,
Day: day,
ExternalMailItemID: externalMailItemID,
ExternalMailLocationID: externalMailLocationID,
Quantity: quantity
};
}
</script>
我认为问题在于指定
JsonRequestBehavior.AllowGet
然后发布到该方法:
$.ajax({
type: "POST",
url: url,
如果数据库被填充,我们知道存储库代码正在启动。浏览器正在报告一个HTTP403,闻起来好像框架正在抛出一个安全异常,如果它希望响应GET并接收POST,它可能会这样做。如果您指定数据类型为json,但响应无法解析为json,ajax请求将进入错误块 打开chrome并在错误块中放置断点,然后查看数据值。将内容放在json验证器中,并检查以确保您的响应是有效的json 同时将成功和错误函数的方法sigs更改为
success: function(data, txtStatus, jqxhr){ // code here }
error: function( jqxhr, txtStatus, errorThrown) { // code here }
然后在这些函数中放置断点,您可以检查参数并更清楚地看到发生了什么
--更新
由于您得到的是403错误代码,请参阅stackoverflow上的回答,并检查您所指向的文件夹的权限
还可以看看这个,因为您正在运行IIS 5.1,它看起来像。。。这可能是相似的
尝试将控制器中的方法从JsonResult更改为ActionResult
<HttpPost()> _
Function Create(ByVal collection As ExternalMail) As ActionResult
_
函数Create(ByVal集合作为ExternalMail)作为ActionResult
正如denas所说,您需要检查返回的textStatus和errorThrown生成的变量中的内容,因为您可以返回200 HTTP代码以外的内容,并且代码仍然可以正常执行(这种情况是因为您报告将记录添加到数据库中)。一个200 HTTP代码将触发“success”函数,我现在记不起来了,但是4xx或5xx中的某些东西应该会触发“error”函数
这里要考虑的主要问题是,控制jQueryAjax调用中触发的函数的是Web服务器的HTTP返回代码
将代码更改为:
error: function( jqXHR, textStatus, errorThrown ) {
console.log(textStatus);
console.log(errorThrown);
}
告诉我们这些textStatus和errorSprown变量中有什么。如果在
返回Json(“发生错误”)上设置断点,会发生什么?它命中了吗?不,没有命中。你有没有命中过你的创建方法?是的,它确实命中了创建方法并成功保存了记录,没有引发异常,但它调用了错误回调function@user1490835您使用的是本地IIS服务器还是Visual Studio开发服务器?我已尝试删除JsonRequestBehavior.AllowGet但错误抛出仍然相同。完成上述所有步骤后,仍然报告相同的问题。
success: function(data, txtStatus, jqxhr){ // code here }
error: function( jqxhr, txtStatus, errorThrown) { // code here }
<HttpPost()> _
Function Create(ByVal collection As ExternalMail) As ActionResult
error: function( jqXHR, textStatus, errorThrown ) {
console.log(textStatus);
console.log(errorThrown);
}