我试图通过jquery中的ajax将数组传递给php,但是在ajax成功的警报中,它返回的html中没有返回任何内容。
当设置ajax发送到json
的类型时,ajax完全失败,所以我将它保留为html,因为它至少返回php页面。
我如何在php端管理这个数组?
JS / JQ
var multi = $('.till__tablepanel_table_' + tablenumber + '_row__ticket');
var myarray = [];
$.each(multi, function (index, item) {
myarray.push({
name: 'ticket_row_num',
value: $(item).data('ticket_row_num')
});
myarray.push({
name: 'itemtitle',
value: $(item).data('itemtitle')
});
myarray.push({
name: 'row_itemid',
value: $(item).data('row_itemid')
});
myarray.push({
name: 'row_quantity',
value: $(item).data('row_quantity')
});
myarray.push({
name: 'rowunitprice',
value: $(item).data('rowunitprice')
});
myarray.push({
name: 'row_total',
value: $(item).data('row_total')
});
myarray.push({
name: 'measure_type_is_grams',
value: $(item).data('measure_type_is_grams')
});
});
//alert(JSON.stringify(myarray));
var url = "http://www.thepantrybromley.com/home/secure/bin/updateDatabase_items.php";
$.ajax({
type: 'POST',
url: url,
dataType: 'html',
data: {
myarray: myarray
},
beforeSend: function () {
// alert("before send");
},
success: function (html) {
alert(html);
}
});
PHP
<?
$array=json_decode($_POST['myarray']);
echo $array;
?>
答案 0 :(得分:2)
jQuery没有将数组编码为JSON,它使用URL编码。 PHP自动对此进行解码,因此您不必使用任何&#34;解码&#34;功能。只是做:
<?php
var_dump($_POST['myarray']);
答案 1 :(得分:1)
要获取php端的数据,您可以使用foreach,其中键基于传递的数组中的对象。
<?php
$array = $_POST['myarray'];
if(is_array($array)){
foreach($array as $item){
$name = $item['name'];
$value = $item['value'];
//your database insert here. just do some validations (like addslashes etc) before inserting
mysql_query("INSERT into mytable(name,value) values('{$name}','{$value}')")
or die (
json_encode(
array(
'status'=>'error',
'message'=>mysql_error()
)));
}//foreach
echo json_encode(
array(
'status'=>'success'
));
}else{
echo json_encode(
array(
'status'=>'error',
'message','no data')
);
}
?>
更新:您可以回显一个json数组以获取数据插入的状态 对于javascript端,将dataType更改为json
var url = "http://www.thepantrybromley.com/home/secure/bin/updateDatabase_items.php";
$.ajax({
type: 'POST',
url: url,
dataType: 'json',
data: {
myarray: myarray
},
beforeSend: function () {
// alert("before send");
},
success: function (result) {
if(result.status == 'success'){
alert('Success')
}else{
alert(result.message);
}
}
});
答案 2 :(得分:0)
在发送之前使用json_encode()
对数组进行编码,然后在另一端对其进行解码。
var encoded_array = json_encode(array_variable);
$.ajax({
type: 'POST',
url: url,
dataType: 'html',
data: {
myarray:encoded_array
},
beforeSend: function() {
// alert("before send");
},
success: function(html) {
alert(html);
}
});