无法将数组从jquery传递给php

时间:2011-09-23 17:35:37

标签: php jquery

我需要传递一个数组从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来查看结构。伙计们,我做错了什么,在哪里? 谢谢。

2 个答案:

答案 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);

美好的一天。