使用form.submit()时出错

时间:2013-04-15 05:48:18

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

我们正在将extjs and webapi(C#)用于我们的应用程序。我的表单有一个fileupload控件。当我们在extjs中使用form.sumbit()时,它不会进入成功函数。

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.

7 个答案:

答案 0 :(得分:1)

似乎有一个FireFox错误,它会插入内容类型......

JQuery - $.ajax ContentType Problem in Firefox

答案 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 :(得分:1)

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

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


               },
               failure: function ( fp, o )
               {

               }
            } );

答案 3 :(得分:1)

试试这个:

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

答案 4 :(得分:1)

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

所以代替 http.open(“GET”,destURL,true); 我在用 http.open(“GET”,destURL,false);

Firefox dont accept asynchron Option on "false"

答案 5 :(得分:1)

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

enctype = multipart/form-data

这可能会有所帮助

答案 6 :(得分:0)

使用以下代码。

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 )
               {

               }
            } );

我刚刚更改了内容类型。