如何通过`form-urlencoded`发送ajax请求?服务器端请求对象没有表单数据

时间:2017-02-01 19:16:22

标签: javascript asp.net ajax

我有以下javascript:

function foo()
{
  var someObject = $("#someTextbox").val();
  var contentType = 'application/x-www-form-urlencoded; charset=UTF-8;';
  AjaxRequest(someObject, 'html', 'post', '/ErrorCheck/SaveToFile', contentType, function(response)
  {
    //stuff
  }, function(error)
  { });
}

function AjaxRequest(data, dataType, type, url, contentType, success, error, args)
{
  try
  {
    var useFD = false;
    var form = new FormData();
    if (type.toUpperCase() == 'POST')
    {
      if (contentType && contentType.indexOf('application/x-www-form-urlencoded; charset=UTF-8;') === 0)
      {
        form.append("MyData", JSON.stringify(data));
        url = antiForgeryToken.add(url);
        useFD = true;
      }
    }

    $.ajax(
    {
      processData: useFD ? false : true,
      mimeType: useFD ? "multipart/form-data" : "",
      async: args.async,
      cache: args.cache ? true : false,
      data: useFD ? form : data,
      dataType: dataType,
      type: type,
      url: url,
      contentType: contentType,
      traditional: true,
      headers:
      {
        '__RequestVerificationToken': antiForgeryToken.token() != false ? antiForgeryToken.token().val() : '',
        '__loginUserId': $('#hidLOGINUSERID').val()
      },
      beforeSend: function(request)
      { },
      success: function(data, textStatus, XMLHttpRequest)
      {
        try
        {
            success(data, textStatus, XMLHttpRequest);
        }
        catch (e)
        {}
      },
      error: function(XMLHttpRequest, textStatus, errorThrown) {},
      complete: function(XMLHttpRequest) {}
    });
  }
  catch (err)
  {}
}

在上述方案中,useFDtrue

然后在我的ErrorCheck控制器的SaveToFile方法中,我有以下内容:

public void SaveToFile()
{
    try
    {
        if (Request.Form.Count > 0)
        {
            //do stuff
        }
    }
    catch (Exception ex)
    {
        ElmahLogUtility.ErrorException(ex);
    }
}

但是,Request.Form.Count始终为零。我从几个月前问过的问题中得到了这个解决方案here。我在10月份接受了那里的解决方案,我知道这个代码正在运行,但直到最近才进入测试环境,它不再工作,甚至在我的本地环境中也没有。

我做错了什么?

0 个答案:

没有答案