Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从PHP读取JSON Post对象_Php_Jquery_Ajax_Json - Fatal编程技术网

如何从PHP读取JSON Post对象

如何从PHP读取JSON Post对象,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我对“JSON、JQuery、Ajax、JavaScript和PHP”有问题。 我有保存数据的代码。这段代码通过jQueryAjax将数据(JSON)发送到proses.php。保存数据的代码如下所示: $("#save").click(function(){ var id_promotion_code = $("#id_promotion_code").val(); var i=0; var y=0; var dat

我对“JSON、JQuery、Ajax、JavaScript和PHP”有问题。 我有保存数据的代码。这段代码通过jQueryAjax将数据(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);
            }
        });
    });



    if($aksi=='tambahrule'){
            $datarule = $_POST['datarule'];
            $jsone = json_decode($datarule, true);
            print_r($jsone);
    }

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



    if($aksi=='tambahrule'){
            $datarule = $_POST['datarule'];
            $jsone = json_decode($datarule, true);
            print_r($jsone);
    }

但是我无法使用proses.php代码获取json数据。请帮助我如何阅读用php通过jquery 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.数据在数组中,是否应更改为Object?怎么做?
2.如何在PHP中获取数据?

我认为您应该以另一种方式发送数据:

data: { aksi: "tambahrule", datarule:  datarule},

因为datarule是一个复杂的对象,不能附加到querystring。服务器端您的代码应该正常

我认为您应该以另一种方式发送数据:

data: { aksi: "tambahrule", datarule:  datarule},

因为datarule是一个复杂的对象,不能附加到querystring。服务器端的代码应该是正常的

尝试在ajax调用中使用
数据类型:“json”

尝试在ajax调用中使用
数据类型:“json”

你不需要解码。你可以试试看

PHP代码:

$datarule = $_POST['datarule'];
$datarule = implode(',', $datarule);
print_r($datarule);

$datarule
是一个数组

您不需要解码。你可以试试看

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'];
}

或者类似的东西…

Nicola Peluchetti的回答是正确的,datarule不是查询字符串,你需要按照他解释的那样发送它

此外,将数据作为数组也可以。但您需要更改服务器代码以按如下方式进行处理:

$datarule = $_POST['datarule'];
$rulenya = '';
foreach ($datarule['rule'] as $doc) {
    $rulenya .= $doc['id_pricing_rule'];
}

或者类似的东西…

用于接收回复,与发送无关,这是这里的问题。我已经编辑了我的问题,因为我不能在评论中写munch字符。请查收。谢谢…这是为了收到回复,这与发送无关,这是这里的问题。我已经编辑了我的问题,因为我不能在评论中写munch字符。请查收。谢谢…我已经编辑了我的问题,因为我不能在评论中写芒克字符。请查收。谢谢…我已经编辑了我的问题,因为我不能在评论中写芒克字符。请查收。谢谢…我已经编辑了我的问题,因为我不能在评论中写芒克字符。请查收。谢谢…我已经编辑了我的问题,因为我不能在评论中写芒克字符。请查收。谢谢