【问题标题】:Posting form data as Json using Knockout JS/ JQuery使用 Knockout JS/JQuery 将表单数据作为 Json 发布
【发布时间】:2013-01-17 20:35:34
【问题描述】:

当我尝试将 Json 格式的表单数据发布到服务器时,我正在运行一些错误。我的代码如下。

permissionRequestModel.requestPermission = function () {
if ($("#permissionRequestForm").valid()) {
  $.ajax({
          url: "",
          type: "POST",
          data: ko.toJSON(this),
          processData:false,
          contentType: "application/json",
          dataType:"json",
          success: function (result) {
                    alert("Success");
                     },
         error: function (result) {
             alert(result.responseText);
                 }
           });
          }
    else {
        }
        }; 

敲除模型如下

//Model
var permissionRequestModel = {
coNumber: ko.observable(''),
employName: ko.observable(''),
fromDate: ko.observable(''),
toDate: ko.observable(''),
checkFullDay: ko.observable(false),
fromTimeHH: ko.observable(''),
fromTimeMM: ko.observable(''),
toTimeHH: ko.observable(''),
toTimeMM: ko.observable(''),
permissionTypeOne: ko.observable(''),
permissionTypeTwo: ko.observable(''),
approverList: ko.observableArray([]),
reasonLeave: ko.observable('')
}; 

在某些地方阅读可能是因为 Json 可能在发送到服务器之前被编码,但即使设置 processData 也无法解决它。请指导。

错误信息

【问题讨论】:

  • 你能与我们分享你得到的错误吗?
  • 假设 url 中的空格只是一个错字,datako.toJSON 之后是什么样子?您的 JSON 中有任何未转义的引号吗?另外,回显@nemesv,您从错误回调中得到的错误是什么?
  • 网址空格是错字,已编辑问题以包含错误消息。谢谢。
  • @nemesv 我现在无法访问服务器端代码,但我发现错误是因为approverList:ko.observable([]) 将null 作为其值传递。当在那里给出一个值时,它工作正常。感谢您的宝贵时间。
  • @nemesv 你能帮忙删除上面的评论吗,因为它包含一些敏感的名字。

标签: json jquery knockout.js


【解决方案1】:

this 更改为permissionRequestModel ...您的this 不是模型,因为您不再处于模型的上下文中。你在一个函数里面,this 会返回这个函数。

permissionRequestModel.requestPermission = function () {
if ($("#permissionRequestForm").valid()) {
  $.ajax({
          url: url,
          type: "POST",
          data: ko.toJSON(permissionRequestModel),
          processData:false,
          contentType: "application/json",
          dataType:"json",
          success: function (result) {
                    alert("Success");
                     },
         error: function (result) {
             alert(result.responseText);
                 }
           });
          }
    else {
        }
        }; 

【讨论】:

  • 能否请您帮我删除/编辑此答案,因为它包含一些敏感信息。
猜你喜欢
  • 1970-01-01
  • 2013-01-25
  • 2019-04-06
  • 2020-06-22
  • 2021-06-25
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 2016-08-11
相关资源
最近更新 更多