【问题标题】:Knockout and AJAX post request PHP淘汰赛和 AJAX 发布请求 PHP
【发布时间】:2013-03-09 21:07:01
【问题描述】:

我正在尝试让我们的淘汰表单提交到一个 php 脚本,但我遇到了 undefinedIndex 错误。我很确定这是我们在 ajax 函数中发送数据的方式。

这里是ajax:

        $.ajax({
        url: '/orders/add',
        type: 'post',
        data: {payload:ko.toJSON(allModel)},
        contentType: 'application/json',
        success: function (result) {
            alert(result);
        }
    });

这里是 PHP(我们使用 laravel)

 return json_decode($_POST["payload"]);

【问题讨论】:

  • 您有 2 个数据字段。
  • 对不起。这只是显示在这里。一个被注释掉了。
  • 试试data: JSON.stringify({payload:ko.toJSON(allModel)}),

标签: php javascript json knockout.js laravel


【解决方案1】:

皮特是正确的。您只需要使用一个数据字段。如果您想要一个变量,请在 $.ajax 帖子之前定义它

var dataPayload = ko.toJSON(allModel);
$.ajax({
    url: '/orders/add',
    type: 'post',
    data: {payload: dataPayload},
    contentType: 'application/json',
    success: function (result) {
        alert(result);
    }
});

【讨论】:

  • 我收到 500 内部服务器错误。所以这是从控制台在 POST 中发送的内容:payload=%5B%7B%22serviceName%22%3A%223%22%2C%22serviceQuantity%22%3A%222%22%7D%2C%22bec09c54-d967- f376-703c-4bfd3319b7cb%22%5D 响应为 Notice: Undefined index: payload
  • @ipengineer 这是服务器端问题,不是 javascript/jquery/ajax 问题。您是在服务中获取数据参数并遍历结果还是尝试将其视为数组?
  • 我想我只是把它当作一个对象。我只是在做 return json_decode($_POST['payload']);
  • @ipengineer 这是您表单的预期有效负载吗?也许 ko.ToJSON 做了一些意想不到的事情。相反,您可以尝试 JSON.stringify(allModel);看到它有效了吗?
  • 我认为这是问题的一部分。现在的问题是如何取出所有对象。这是发布请求的样子: [{"serviceName":"2","serviceQuantity":"4"},{"serviceName":"3" ,"serviceQuantity":"2"},{"hardwareName":"1","hardwareQuantity":"6","hardwareBYOD":""}] 我假设我需要以某种方式对其进行解码,然后进行 foreach。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 2012-11-02
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多