[英]How to Read JSON Post Object from PHP
我对“ JSON,JQuery,Ajax,JavaScript和PHP”有疑问。 我有保存数据的代码。 这段代码通过JQuery Ajax将数据(JSON)发送到proses.php。 保存数据的代码如下所示:
$("#save").click(function(){
var id_promotion_code = $("#id_promotion_code").val();
var i=0;
var y=0;
var datarule = {
rule: []
};
$('#tablerule tr').each(function() {
if(y!=0)
{
var id_pricing_rule = $(this).find("td").eq(0).html();
var date_book_start = $(this).find("td").eq(3).html();
var date_book_end = $(this).find("td").eq(4).html();
var date_book_no_end = 0;
if(date_book_end=="NO END")
{
date_book_no_end = 1;
date_book_end = $(this).find("td").eq(3).html();
}
var date_reservation_start = $(this).find("td").eq(5).html();
var date_reservation_end = $(this).find("td").eq(6).html();
var date_reservation_no_end = 0;
if(date_reservation_end=="NO END")
{
date_reservation_no_end = 1;
date_reservation_end = $(this).find("td").eq(5).html();
}
datarule.rule.push({
"id_promotion_code" : id_promotion_code,
"id_pricing_rule" : id_pricing_rule,
"date_book_start" : date_book_start,
"date_book_end" : date_book_end,
"date_book_no_end" : date_book_no_end,
"date_reservation_start" : date_reservation_start,
"date_reservation_end" : date_reservation_end,
"date_reservation_no_end" : date_reservation_no_end
});
i++;
}
y++;
});
$.ajax({
type:"POST",
url:"proses.php",
data:"aksi=tambahrule&datarule=" + datarule,
success: function(data){
alert("Sukses " + data);
},
error: function(){
alert("Error" + data);
}
});
});
以及proses.php中的代码如下所示:
if($aksi=='tambahrule'){
$datarule = $_POST['datarule'];
$jsone = json_decode($datarule, true);
print_r($jsone);
}
但是我无法使用proses.php代码获取json数据。 请帮助我如何读取通过jQuery与PHP的ajax发送的json对象? 其实我想循环json以获取数据。
------------------------我的新编辑----------------------- ------
感谢您的回复...我已经修改了我的代码。 并运行,但还不是很好。 这是我使用Firebug检查时的响应:
Array
(
[rule] => Array
(
[0] => Array
(
[id_promotion_code] =>
[id_pricing_rule] => BN2
[date_book_start] => 2012-03-01
[date_book_end] => 2012-03-01
[date_book_no_end] => 1
[date_reservation_start] => 2012-03-09
[date_reservation_end] => 2012-03-09
[date_reservation_no_end] => 1
)
[1] => Array
(
[id_promotion_code] =>
[id_pricing_rule] => EB10%
[date_book_start] => 2012-03-15
[date_book_end] => 2012-03-15
[date_book_no_end] => 1
[date_reservation_start] => 2012-03-31
[date_reservation_end] => 2012-03-31
[date_reservation_no_end] => 1
)
)
)
这是用于获取数据的PHP代码:
$datarule = $_POST;
$rulenya="";
foreach($datarule->rule as $doc)
{
$rulenya=$rulenya.$doc->id_pricing_rule;
}
print_r($datarule);
但是得到错误。 我的问题是? 1.数据在数组中,我应该更改为对象吗? 如何? 2.如何在PHP中获取该数据?
我认为您应该以其他方式发送数据:
data: { aksi: "tambahrule", datarule: datarule},
因为datarule是一个复杂的对象,不能附加到查询字符串中。 在服务器端,您的代码应该可以
尝试在ajax调用中使用dataType: 'json',
。
您没有json_decode。 你可以试试;
PHP代码:
$datarule = $_POST['datarule'];
$datarule = implode(',', $datarule);
print_r($datarule);
$datarule
是一个数组
Nicola Peluchetti的答案是正确的,datarule不是查询字符串,您需要按照他的解释发送它。
此外,将数据作为数组可以。 但是您需要更改服务器代码以进行如下处理:
$datarule = $_POST['datarule'];
$rulenya = '';
foreach ($datarule['rule'] as $doc) {
$rulenya .= $doc['id_pricing_rule'];
}
或类似的规定...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.