我需要传递一个数组从jquery到php进行处理。 我创建一个像这样的数组对象
function Bet(eventId,pick,odds,stake,profit,betType){
return {
eventId:eventId,
pick:pick,
odds:odds,
stake:stake,
profit:profit,
betType:betType
}
在我的提交处理程序中,我有这段代码
var bets = {};
$(".bet-selection").each(function() {
/**
some logic here
**/
}
});
bets.push(Bet(eventId,pick,odds,stake,profit,betType));
});
$.ajax({
url: 'testsubmit.php',
cache: false,
type: 'post',
data: bets
});
提交表格时没有任何反应。我希望将一个数组提交给php,我可以使用print_r来查看结构。伙计们,我做错了什么,在哪里? 谢谢。
答案 0 :(得分:0)
AJAX将数据发送到外部文件,您将无法看到输出。这就是为什么提交表单时没有任何明显的事情发生的原因。也许如果您有PHP脚本通过电子邮件向您发送数据,那么您可以检查它是否正确传递了它。
答案 1 :(得分:0)
首先,你的代码在语法和语义上都是不正确的。我用“< ----”
标记了错误的地方function Bet(eventId,pick,odds,stake,profit,betType){
return ({
eventId:eventId,
pick:pick,
odds:odds,
stake:stake,
profit:profit,
betType:betType
});
} <------
var bets = {};
$(".bet-selection").each(function() {
/**
some logic here
**/
}
bets.push(Bet(eventId,pick,odds,stake,profit,betType)); <--- I guess this should be inside the loop, right?
});
现在你不能像这样发布Javascript对象。最好的选择是将它们编码为JSON(JavaScript Object Notation),它实际上将它们编码为...作为JS对象:)
现代浏览器包括JSON解析器/编码器,但旧版本没有。因此,请包含以下库,以确保旧浏览器不会中断:https://github.com/douglascrockford/JSON-js
接下来,您需要修改一些代码:
$.ajax({
url: 'testsubmit.php',
cache: false,
type: 'post',
data: { bets : JSON.stringify(bets)}
});
在PHP方面,使用json_decode函数将JSON字符串解码为PHP对象数组。
<?php
$bets = json_decode($_POST['bets']);
var_dump($bets);
美好的一天。