2013-03-20 154 views
0

我试图让我们的挖空窗体提交给php脚本并得到undefinedIndex错误。我很确定这是我们通过ajax函数发送数据的方式。Knockout和AJAX发布请求PHP

这里是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"]); 
+1

您有2个数据字段。 – Pete 2013-03-20 16:25:40

+0

对不起。这只是显示在这里。一个被注释掉。 – ipengineer 2013-03-20 17:32:36

+0

尝试'data:JSON.stringify({payload:ko.toJSON(allModel)}),' – Pete 2013-03-20 17:51:06

回答

1

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

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

我收到500内部服务器错误。 所以这是POST中从控制台发送的内容: 有效负载=%5B%7B%22serviceName%22%3A%223%22%2C%22serviceQuantity%22%3A%222%22%7D%2C%22bec09c54 -d967-f376-703c-4bfd3319b7cb%22%5D 响应是注意:未定义索引:有效负载 – ipengineer 2013-03-20 17:30:02

+0

@ipengineer这是服务器端问题,而不是javascript/jquery/ajax问题。你是否正在服务中使用数据参数并循环遍历结果或试图像数组一样对待它? – 2013-03-20 18:14:12

+0

我想我只是把它当作一个对象。我只是做返回json_decode($ _ POST ['payload']); – ipengineer 2013-03-20 18:26:52