2013-07-05 94 views
0

我試圖使用JQuery $.post與中介php腳本將動態隱藏輸入的值發回到同一頁面。正確的值返回,並在下面的代碼警報顯示,但無法通過$_POST搶在頁面的值:

$caseId = $_POST['case_pk']; 

echo $caseId; 

的:

$(document).ready(function() { 

$('.case').click(function() { 
var caseId = $(this).find('input:hidden').val(); 
$.post("scripts/get_case.php", { case_pk: caseId }, 
    function(data) { 
    alert("Respond: " + data); 
    }); 
}); 

而且在同一頁上中介PHP頁面(get_case.php):

<?php 
$case = $_POST['case_pk']; 
echo $case; 
?> 

的情況是:

我有div按鈕,這些按鈕是根據頁面vmd.php中mysqldb中的cases的數量動態生成的。這些動態生成的div按鈕中的每一個都包含一個帶有案例ID(case_pk)的相應值的隱藏輸入。點擊其中一個按鈕,我想運行一個基於vmd.php中的事件ID的mysql查詢。所以我的理解是,我需要通過ajax將隱藏字段中的case_pk返回到同一頁(vmd.php),並將其放入可用於查詢的php變量中。

+0

1.'var_dump($ _ POST);'2.在瀏覽器中打開開發工具並檢查發送的內容 – zerkms

+1

因爲*相同的頁面*沒有被重新加載。我想你想用Ajax來更新標記。如果你有alert語句,使用'$('。some-item')。html(data);'。 –

+1

您正在使用AJAX將值發佈到似乎正在工作的中間腳本。如果你有變量,爲什麼不把它放在你需要它的地方?確切地說你在哪裏檢查$ _POST ['case']?你的變量名稱也不同('case'或'case_pk')。 – 2013-07-05 01:30:53

回答

1

由於兩個PHP示例中的第一個似乎沒有被任何東西使用,所以您不完全清楚哪個頁面是意圖將發佈到該值。然而,這兩個例子中的第二個似乎正在起作用。您正在成功地向另一個服務器端資源(get_case.php)執行AJAX POST,該資源正在成功接收該值並回顯相同的值(給出客戶端alert()的行爲如預期的描述)。

因此,在這種情況下,你的服務器端功能可以通過get_case.php啓動,以及任何相關的響應然後可以通過在回調函數客戶端代碼發送回網頁和處理(你現在有一個alert()) 。

請記住,沒有必要將值張貼到「當前頁面」。您可以POST到任何服務器端資源。事實上,您可能會發現,最好在產生UI的頁面(本例中爲「當前頁面」)和頁面之間分隔服務器端資源,這些頁面更像Web服務,用於AJAX調用並僅返回數據(本例中爲get_case.php )。這可以使組織代碼更容易,而無需使用混亂的條件來確定是否應呈現UI或JSON。

所以操作的成功的訂單可能會去是這樣的:在瀏覽器

  1. 用戶負載page1.php
  2. page1.php執行一些服務器端操作並呈現UI。
  3. 在UI中有JavaScript代碼,它會對page2.php進行AJAX調用。
  4. page2.php執行一些服務器端操作並呈現JSON數據。
  5. JavaScript代碼接收JSON數據並執行一些客戶端操作。
1

我假設你的「後」是一樣的東西

<input id="case_pk" name="case_pk" type="hidden" value=""> 

所以成功你應該:

$('#case_pk').value(data); 

以「重置/變更」中隱藏的價值輸入。