通过ajax传递数组

时间:2014-06-02 11:59:59

标签: javascript php jquery ajax

我对同一页面上的jQuery执行相当新。到目前为止,我一直只通过ajax传递单个值,这是正常的。现在,我需要传递一个由复选框通过ajax创建的数组。

我的表格html,由php动态创建:

<input type=checkbox class=box name=box[] value=".$row['DoosID']." />

我的jQuery:

    var BackorderDate   = $("#BackorderDate").val();
    var Box = $(".box").val();

        if( (TerugleverDatum == "") ){
            $("#backorderresult").html(" * Some Error .").fadeIn("Slow").fadeOut(3000);
        } else {
            $("#backorderresult").fadeOut();
            $.ajax({
                type    :'POST',
                url     :'./backorder.php',
                data    : box : Box,
                                              backorderdate: BackorderDate,
                dataType:"json",
                success: function(data){
                    // Do Something
             }
        });
    }

我的PHP:

$boxlist = json_encode($box);

foreach($boxlist as $boxvalue){
   // Do something with every value
 }

这给了我一个javascript错误提交说明框没有定义。

4 个答案:

答案 0 :(得分:2)

改变这个:

data    : box : Box, backorderdate: BackorderDate, // invalid way of sending

到此:

data    : {box : Box, backorderdate: BackorderDate}, // valid way

数据

  

类型:PlainObject或String
  要发送到服务器的数据。如果不是字符串,它将转换为查询字符串。它附加到GET请求的URL。请参阅processData选项以防止此自动处理。对象必须是键/值对。

More Info

答案 1 :(得分:2)

为什么不尝试将所有数据值括在一个开放和密切的卷曲钎焊({ and })中。 否则它将与$.ajax方法的语法冲突。

我认为这是导致问题的原因。

答案 2 :(得分:2)

您正在以错误的方式发送数据值 -

The data property should always be a JavaScript object. It's properties are serialized into a regular query string (for GET requests), or a normal post body parameter string (for POST requests). This serialized string is then sent to the server, along with the AJAX request. On the server you can read the properties of the data object as if they were sent as simple request parameters, via either GET or POST. Just like if the properties had been fields in a form.

试试这个:

$.ajax({
    type    :'POST',
    url     :'./backorder.php',
    data    : 'box='+Box+'&backorderdate='+BackorderDate,
    dataType:"json",
    success: function(data){
        // Do Something
    }

});

有关详细信息,请参阅jQuery Ajax

答案 3 :(得分:0)

你可能想要像这样引用php文件:url :'../backorder.php'(双点)。至少,这就是我如何做到的。

相关问题