可以';t在php端获取Jquery值


Can't get Jquery value on php side

我有一个数组,它是用javascript代码填充的。当点击确认按钮时,我需要在php端达到这个数组的值。所以,我使用的ajax post方法如下。它运行成功,我知道,因为所有的警报都工作成功。这是我代码的js部分。

$('#firstConfirmButton').click(function(){  
    var my_json_val = JSON.stringify(ordersArray, null);
    alert(my_json_val.toString());
    $.ajax({
        type: "POST",
        url: "test.php",
        data: my_json_val,
        cache: false,
        contentType: false,
        async: false,
        processData: false,
        success:  function(response){
            //alert("---"+data);
        alert("Settings has been updated successfully.");
        alert(my_json_val);
        alert(response);
        window.location.reload(true);
        }
    }); 

});

另一方面,我有一个test.php页面,它还包含使用上面js代码的"确认"按钮。当点击这个按钮时,我想要回显我用ajax发布的数组的值。但是我无法获得php端的值。这是我的php代码;

<?php

    require("includes/db.php");
    require("includes/functions.php");
    session_start();       
    if (isset($_POST['firstConfirmButton'])) {
        echo 'I am here'; //I can see only this row on php page
        $my_json_encoded = $_POST['data'];
        $my_json_val = json_decode($my_json_encoded);
        echo $my_json_val;  //nothing happens          
    }

这是我的确认按钮的html代码;

<form role="form" method="post" action="starbucks.php">
                    <div id="firstConfirmButton">
                        <button type="submit" name="firstConfirmButton"   id="firstConfirmButton" class="btn btn-primary btn-lg">Onayla</button>
                    </div>

那么,哪里是我的错,请帮帮我!

不要将数组强制转换为Json,ajax post会自己强制转换,所以用ordersArray替换my_json_val

您真的想重定向到php文件还是只需要其中的数据?因为action="file.php"重定向到此文件。如果你只需要数据,试着使用jquerys.submit方法并进行ajax调用,否则用它来重新映射你的动作属性(为了简单起见,如果你的网站上有多个表单,我会在表单上使用id):

$('#yourform').submit(function(){
   var my_json_val = JSON.stringify(ordersArray, null);
   var elem = {
       firstConfirmButton: true, 
       data: my_json_val
   }
   $.ajax({
        type: "POST",
        url: "test.php",
        data: elem,
        cache: false,
        contentType: false,
        async: false,
        processData: false,
        success:  function(response){
            //alert("---"+data);
            alert("Settings has been updated successfully.");
            alert(my_json_val);
            alert(response);
        }
    }); 
    return false;
});

如果你真的想重定向,试着使用这个:

$('#yourform').submit(function(ev){
    var my_json_val = JSON.stringify(ordersArray, null);
    $(this).attr('action', ev.target.action+'?data="'+my_json_val+'"');
});