Javascript 使用Dojo.JsonRest调用grid.model.save()的gridx lazyedit在500 put响应上解析

Javascript 使用Dojo.JsonRest调用grid.model.save()的gridx lazyedit在500 put响应上解析,javascript,dojo,dojo.gridx,Javascript,Dojo,Dojo.gridx,我正在尝试使用dojo.gridx和dojo.JsonRest作为内存存储。我正在使用lazyEdit功能,因为在提交之前需要完全填写行的某些限制 我有一个按钮和延迟对象,定义如下 grid.startup(); // var gridDeferred = new Deferred(function(reason){ // do something when the Deferred is cancelled // alert("cancele

我正在尝试使用dojo.gridx和dojo.JsonRest作为内存存储。我正在使用lazyEdit功能,因为在提交之前需要完全填写行的某些限制

我有一个按钮和延迟对象,定义如下

        grid.startup();
  //  var gridDeferred = new Deferred(function(reason){
        // do something when the Deferred is cancelled
    //    alert("canceled");
   // });


    var saveButton = new Button({
        label: "Save All Changes",
        onClick: function(){
            gridDeferred =  grid.model.save();
          //  gridDeferred = grid.model.when();
            gridDeferred.then(function(value){
                alert("done");
            },function(err){
                alert("err");
            }, function(update){
                alert("update");
            });

        }
    }, "Update").startup();
我还尝试在按钮上的onclick事件之前取消对延迟对象的注释,但仍然没有成功

这是我从服务器返回的响应头

HTTP/1.1 500 Internal Server Error
Cache-Control: private, s-maxage=0
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server:   "removed by McFrank"
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
Set-Cookie:  "removed by McFrank"
X-Powered-By: "removed by McFrank"
Date: "removed by McFrank"
Content-Length: 46
我是否忘记添加一个头,以便dojo核心库拒绝该请求?我还可以看到调试器中抛出的follow错误

PUT http://localhost:36348/admin/sales/1 500 (Internal Server Error)xhr
@dojo.js:15dojo.xhr 
@ dojo.js:15_4.put 
@ JsonRest.js:33_60c.around.advice 
@ dojo.js:15_607.(anonymous function)._60c 
@ dojo.js:15declare._saveRow 
@ Modify.js:412(anonymous function) 
@ Modify.js:249_5b5.forEach 
@ dojo.js:15declare.save 
@ Modify.js:248declare._call 
@ _Extension.js:67declare._call 
@ _Extension.js:67declare._call 
@ _Extension.js:67declare._call 
@ _Extension.js:67declare._mixinAPI.api 
@ _Extension.js:76Button.onClick 
@ salesdata:540_1._onClick 
@ _ButtonMixin.js:16(anonymous function) 
@ dojo.js:15_1.__onClick 
@ _ButtonMixin.js:7(anonymous function) 
@ dojo.js:15
我也得到了这个错误

_5aa {message: "Unable to load /admin/sales/1 status: 500", response: Object, status: 500, responseText: "DealershipProductID:System.Web.Mvc.ModelError,", xhr: XMLHttpRequest}message: "Unable to load /admin/sales/1 status: 500"response: ObjectresponseText: "DealershipProductID:System.Web.Mvc.ModelError,"stack: (...)get stack: () { [native code] }set stack: () { [native code] }status: 500xhr: XMLHttpRequest__proto__: _5aa_4c3 @ dojo.js:15(anonymous function) @ dojo.js:15_1fe @ dojo.js:15_1fc @ dojo.js:15dojo.Deferred.reject.errback @ dojo.js:15_1fe @ dojo.js:15_1fc @ dojo.js:15dojo.Deferred.reject.errback @ dojo.js:15(anonymous function) @ dojo.js:15_4ec @ dojo.js:15_4e6 @ dojo.js:15_504.reject @ dojo.js:15_4f2 @ dojo.js:15_4ec @ dojo.js:15_4e6 @ dojo.js:15_504.reject @ dojo.js:15_4f2 @ dojo.js:15_4ec @ dojo.js:15_4e6 @ dojo.js:15_504.reject @ dojo.js:15_4f2 @ dojo.js:15_4ec @ dojo.js:15_4e6 @ dojo.js:15_504.reject @ dojo.js:15_4f2 @ dojo.js:15_4ec @ dojo.js:15_4e6 @ dojo.js:15_504.reject @ dojo.js:15_40b @ dojo.js:15_417 @ dojo.js:15
我还尝试让dojo xhr请求出错,它在以下请求中会出错

  xhr.put("http://localhost:36348/admin/sales/1", {
        data:{"Id":1,"ProductID": null,"AccountExecName":"something","NetCommissionAmount":13625},
        handleAs:"json"
}).then(function(data){
    alert("testDone")
},function(err){
    alert("testerror");
}, function(evt){
    alert("testxhr");
}
        )

github上的工匠发布了这一回应。我没有尝试或测试过他的方法

在gridx/core/model/extensions/Modify.js中,保存函数 两种选择:

  • 第252行 更改
    dl=新延迟列表(da)
    to
    dl=新的延迟列表(da、false、true)
    现在可以调用错误回调
  • 第260行 更改
    d.callback()
    d.callback(参数)
  • 现在在回调函数中,您可以使用参数来检测哪些行更新成功,哪些行更新错误

    参数由一个数组DeferredList生成,每个项是一个数组,包含2个子项,第一个子项是一个布尔值,表示更新状态成功或错误


    第二个子项是更新成功时更新的对象,否则第二个子项是表示错误的ErrorCtor对象,您可以从中解析错误消息,github上的craftmans发布了此响应。我没有尝试或测试过他的方法

    在gridx/core/model/extensions/Modify.js中,保存函数 两种选择:

  • 第252行 更改
    dl=新延迟列表(da)
    to
    dl=新的延迟列表(da、false、true)
    现在可以调用错误回调
  • 第260行 更改
    d.callback()
    d.callback(参数)
  • 现在在回调函数中,您可以使用参数来检测哪些行更新成功,哪些行更新错误

    参数由一个数组DeferredList生成,每个项是一个数组,包含2个子项,第一个子项是一个布尔值,表示更新状态成功或错误


    第二个子项是更新成功时更新的对象,否则第二个子项是表示错误的ErrorCtor对象,您可以从中解析错误消息