Jquery .post()传递多个变量不起作用

时间:2014-05-01 05:34:41

标签: jquery parameters cakephp-2.0 .post

在下面的代码中,我尝试将2个参数传递给Ajax调用,但是在加载页面时,我收到如下所示的javascript错误。 请注意,甚至在我尝试通过单击按钮触发ajax之前就会发生此错误(下面显示的代码位于工作按钮单击事件处理程序代码中)。

enter image description here

当我注释掉.post()代码块时,页面加载正常,没有任何javascript错误。 下面是代码。这是我第一次在参考这篇文章后如何将2个参数传递给ajax .post()。 Sending Multiple variables with Jquery ajax

有谁能告诉我我的代码有什么问题?我的警报语句都可正常工作并显示正确的数据。请注意我使用Cakephp,因此那里有一些cakephp语法。

       //Get the merchant config
        alert("you got here!");

        bookingdate = $(this).parent().parent().find("#bookingdate").serialize();
        merchant_id = $(this).parent().parent().find("#merchant_id").serialize();

        alert (bookingdate + " " + merchant_id);

        $.post( "<?php echo Router::url(array('controller'=>'MCP','action'=>'getMtRestaurant')); ?>", {bookingdate, merchant_id}, function() { 
        })
        .done(function(data) {
            alert(data.response);
            //parseddata = JSON.parse(data);
            $('.ajax_booking_edit').append(data);

        })
        .fail(function() {
            alert( "There was a problem retrieving the booking!" );
        })
        .always(function() {
            //alert( "finished (always)" );
        });

我在警告弹出窗口下方显示序列化后显示bookingdate和merchant_id。 enter image description here

3 个答案:

答案 0 :(得分:1)

如果传递一个值,则可以使用技巧。

示例:

var msg = $arg1 + "--" + $arg2 + "--" + $arg3;

    $.post("../Php/test.php", { msg: msg },
                            function (result) {
                                alert(result);
                            });

在php文件中,

<?php
   $msg = $_POST['msg'];
   $ar = explode("--", $msg);
   //Now we have $ar[0] --> arg1, $ar[1] --> $arg2, $ar[2] --> $arg3
?>

希望这有帮助。

答案 1 :(得分:0)

尝试

serialize()他们俩在一起。

var bookingdate = $(this).parent().parent().find("#bookingdate"),
    merchant_id = $(this).parent().parent().find("#merchant_id"),
    filterdata = bookingdate.add(merchant_id).serialize();
$.post("<?php echo Router::url(array('controller'=>'MCP','action'=>'getMtRestaurant')); ?>",
filterdata, function () {})

答案 2 :(得分:0)

如果您通过jQuery发送POST,则需要为您正在使用的变量选择变量名称。修复很简单,只需将行更改为:

$.post( "<?php echo Router::url(array('controller'=>'MCP','action'=>'getMtRestaurant')); ?>", {bookingDate: bookingdate, merchantId: merchant_id}, function() {