2014-10-29 39 views
0

我有一個數組,它填充了javascript代碼。我需要在點擊確認按鈕時在php端達到這個數組的值。所以,我使用下面的ajax post方法。它運行成功,我知道,因爲所有警報都可以成功運行。這是我的代碼的一部分。php側無法獲得jquery值

$('#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> 

那麼,是我的錯,請幫忙!

+0

您是否嘗試過呼應$ _ POST [ '數據']? – Markai 2014-10-29 10:47:40

+0

是的,你有沒有試過$ _POST ['data'],因爲$ _POST ['firstConfirmButton']不包含任何東西! – 2014-10-29 10:51:09

+1

我想你不應該'JSON.stringify'對象在請求中傳遞給'data',或者使用PHP中的'json_decode()'從JSON字符串創建數據結構。 – pawel 2014-10-29 10:51:45

回答

0

不要將數組投射到Json,ajax帖子會自己投射它,所以用ordersArray代替my_json_val

+0

它不起作用,仍然沒有任何 – user3235456 2014-10-29 16:58:40

0

你真的想重定向到你的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+'"'); 
}); 
+0

其實,我只是想要數據使用它的會話變量。所以我改變了我的javascript代碼來提交函數,就像你上面說的那樣。但我仍然無法看到PHP方面的數據。我應該如何更改我的html和php代碼來處理這些數據? – user3235456 2014-10-30 20:33:11

+0

爲什麼要檢查「firstConfirmButton」的設置是否有任何具體原因? – Markai 2014-11-03 09:08:24

+0

如何在服務器端更改代碼強烈依賴於您嘗試使用ajax調用發送的數據。 – Markai 2014-11-03 09:10:08