【问题标题】:Error when using form.submit()使用 form.submit() 时出错
【发布时间】:2013-04-07 03:59:21
【问题描述】:

我们的应用程序使用extjs and webapi(C#)。我的表单有一个fileupload 控件。当我们在extjs中使用form.sumbit()时,是不会去success函数的。

WebApi 代码:

bool SaveData(Employee obj)
{
     return true;
}

Extjs 代码:

form.submit( {
               url: '../api/Empcontroller/SaveData',
               method: 'POST',
               headers: {
               'Content-Type': 'application/json'
                         },
               success: function ( fp, o )
               {


               },
               failure: function ( fp, o )
               {

               }
            } );

我在所有浏览器中都得到了正确的响应。在Chrome 取得成功,但在Firefox its not.

【问题讨论】:

  • 你检查过 FireBug...?
  • 还可以通过Ctrl+Shift+J查看 Firefox 控制台

标签: c# jquery asp.net .net extjs4.1


【解决方案1】:

尝试像这样添加 dataType 参数:

form.submit({
   url: '../api/Empcontroller/SaveData',
   method: 'POST',
   headers: {
       'Content-Type': 'application/json'
   },
   dataType: 'json',
   success: function (fp, o) {

   },
   failure: function (fp, o) {

   }
});

我也见过这样做的:(将 json_data_here 替换为您需要发送的任何数据)

form.submit(Ext.Ajax.request({    
    url: '/../api/Empcontroller/SaveData',
    method: 'GET',
    jsonData: json_data_here,
    headers: {'Content-Type' : 'application/json' , 'Accept' : 'application/json'}
}));

【讨论】:

    【解决方案2】:

    似乎有一个 FireFox 的错误会影响内容类型...

    JQuery - $.ajax ContentType Problem in Firefox

    【讨论】:

      【解决方案3】:

      尝试在提交中添加匿名函数而不是 json:

      form.submit( function(){
                     url: '../api/Empcontroller/SaveData',
                     method: 'POST',
                     headers: {
                     'Content-Type': 'application/json'
                               },
                     success: function ( fp, o )
                     {
      
      
                     },
                     failure: function ( fp, o )
                     {
      
                     }
                  } );
      

      【讨论】:

        【解决方案4】:

        嗯嗯。奇怪的。 我想我发现了这个错误。 当我将 'asyncron' 状态设置为 'false' 告诉脚本等待 serverrequest 的回复时,FireFox 不喜欢它。

        所以而不是 http.open("GET", destURL, true); 我在用 http.open("GET", destURL, false);

        Firefox dont accept asynchron Option on "false"

        【讨论】:

          【解决方案5】:

          我不确定这是否是问题所在。但是文件上传不需要enctype 尝试使用

          enctype = multipart/form-data
          

          这可能会有所帮助

          【讨论】:

            【解决方案6】:

            试试这个:

            form.submit( function(){
                url: '../api/Empcontroller/SaveData',method: 'POST',
                headers: {'Content-Type': 'application/json'},
                success: function (fp, o ){},
                failure: function (fp, o ){}
            });
            

            【讨论】:

              【解决方案7】:

              使用下面的代码。

              form.submit( {
                             url: '../api/Empcontroller/SaveData',
                             method: 'POST',
                             headers: {
                             'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
                                       },
                             success: function ( fp, o )
                             {
              
              
                             },
                             failure: function ( fp, o )
                             {
              
                             }
                          } );
              

              我刚刚更改了内容类型。

              【讨论】:

                猜你喜欢
                • 2016-12-30
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-03-02
                相关资源
                最近更新 更多