通过Ajax将数组从JQuery传递到PHP

时间:2014-04-29 02:09:12

标签: php jquery arrays

我试图通过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;
?>

3 个答案:

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