【问题标题】:Ajax call returns undefined data after second tryAjax 调用在第二次尝试后返回未定义的数据
【发布时间】:2014-07-23 23:11:46
【问题描述】:

我使用的是 MVC3 和 C#,第一次调用一切正常,但第二次 C# action 方法捕获的参数为 null。

这是我的代码:

Monitor.SearchAction = function (pageNum) {
var searchUrl = $("#textURL").data("url");
var newPageNum = pageNum;

var searchInput =
{
    PageNumber: newPageNum
};

searchInput["FromDate"] = $("#FromDate").val();
searchInput["FromHour"] = $("#FromHour").val();

$.ajax({
    url: searchUrl,
    data: JSON.stringify(searchInput),
    success: function (d, m, x) {
        var $listingContainer = $("#listingContainer");
        $listingContainer.html(d);
    },
    async: false,
    cache: false,
});
};

这里是控制器方法头:

public PartialViewResult Search  (DAS.Dashboard.Web.Areas.Monitoring.ViewModels.MonitoringSearchInputModel searchInput)

因此,“searchInput”是一个具有三个属性的模型,在第二次调用时会收到“null”。

【问题讨论】:

  • 这将有助于展示它是如何被调用的。
  • 在不知道 searchUrl 和 searchInput 是如何填充的以及值是什么的情况下,无法诊断。
  • 您是否尝试过基本的故障排除方法,将这些值记录到控制台以查看它们是什么?
  • 直到“data: JSON.stringify(searchInput)”这一行我发现提交的信息就在那里,问题是这个信息在它到达C#方法之前就在中间丢失了。它第一次工作正常,但第二次参数为空。

标签: c# jquery ajax asp.net-mvc-3


【解决方案1】:

检查从被调用的 C# 方法返回的局部视图。即

public PartialViewResult Search  (DAS.Dashboard.Web.Areas.Monitoring.ViewModels.MonitoringSearchInputModel searchInput)

如果部分视图具有“FromDate”和“FromHour”输入字段并且具有与第一次相同的属性。

【讨论】:

  • 谢谢,第一次他们有他们应该的值,第二次他们是空的。
【解决方案2】:

我刚刚发现了问题。使用 Chrome 调试器,我发现第一次发送请求时它的类型是“POST”,而第二次它是“GET”(不知道为什么会这样)。

但是添加“type:'POST'”以及“contentType:'application/json'; charset=utf-8'”解决了这个问题。

谢谢大家。

【讨论】:

    猜你喜欢
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多