2013-05-05 105 views
-1

這是我現在使用的讓AJAX從javascript傳遞字符串變量到PHP

<script> 
    $(document).ready(function() { 
     var namer = sessionStorage.getItem("namer"); 
     $.ajax({ 
      type: "POST", 
      url: "Antibiotics2.php", 
      data: { 'name': namer } 
     }).done(function(msg) { 
      alert("Data Saved: " + msg); 
     }); 
    }); 
</script> 

的JavaScript,這是PHP:

<?php echo $_POST['name']; ?>    

它拋出一個錯誤,並表示,該指數'name'找不到。

+0

這是更新的問題...仍然有問題。 – user1518003 2013-05-06 02:48:12

回答

0

那麼我已經複製你的設置,每次我能夠檢索$ _POST中設置的變量。我也避免修改名稱,因爲您聲明會議正在以類似的問題正確捕捉。

我能夠通過將namer變量設置爲undefined或嘗試檢索不存在的值來重現錯誤。

由於我可以發送變量名字只要它被設置,那麼你將不得不做一些事情。

  1. 檢查是否設置了namer變量,可能是客戶端和服務器端。這是在JavaScript你會測試,如果變量不是未定義或在PHP中,你會檢查是否設置$ _POST ['namer']。

  2. 您的會話可能會過期,因此您要檢索的值ofcourse不再存在,這可能是依賴於你正在使用或設置該庫創建會話

當你聲明在這兩種情況下,您都會遇到同樣的錯誤,並通過執行某些邏輯來避免此錯誤。

服務器端檢查 - PHP:

if(isset($_POST['namer'])){ 
    echo $_POST['namer']; 
}else{ 
    echo "session capture unsuccessful"; 
} 

客戶端檢查 - 使用Javascript:

var namer = sessionStorage.getItem("namer"); 

if (typeof namer === "undefined") 
    console.log("your session is not set"); 
} else{ 
    // you could place your ajax request here 
    // or you could set the namer variable to a default value 
} 

如有可能開發本地Web應用程序,因爲它是更容易調試,並作爲最後注意它可能更易於使用console.log(yourError)進行調試,而不是alert(yourError)。

+0

我遵循你的建議,並在客戶端和服務器端設置變量。但它不會顯示在Firefox頁面上。我使用了firebug,並查看了腳本選項卡,並在此處打印了所需的字符串變量。那麼這是我的瀏覽器的問題嗎?我不認爲這是因爲鉻有同樣的問題。 – user1518003 2013-05-06 19:53:38

+0

好的,現在你已經確認你的變量正在設置,如果你想在你的網站的特定部分顯示值,那麼你可以使用$(「#nameOfDiv」)。append(msg);這是從您的ajax請求返回的值現在可以添加到您網站的任何部分。 – thirdOctet 2013-05-06 22:22:23

+0

我想將該字符串用作SQL語句的一部分。這可能嗎? – user1518003 2013-05-07 00:51:26

1

您正在進行郵寄呼叫,因此您需要使用$ _POST而不是$ _GET。此外,使用引號的字符串鍵

echo $_POST['namer']; 
1

因爲你是一個post請求,你將不得不使用$_POST檢索數據,還必須將數據發送鍵/值對,如

<script> 
$(document).ready(function() { 
     var namer = sessionStorage.getItem("namer"); 
     $.ajax({ 
      type: 'post', 
      url: 'Antibiotics2.php', 
      data: {namer:namer} 
     }); 
}); 
</script> 

PHP

<?php echo $_POST['namer']; ?> 
2

你不告訴PHP變量的名字你發送:

$.ajax({ 
      type: 'post', 
      url: 'Antibiotics2.php', 
      data: { 'namer': namer } 
     }); 
}); 

你會想$_POST在PHP端,並自動引用變量名:

<?php echo $_POST['namer']; ?> 
0

Ajax代碼張貼在這個問題對我的作品。但我使用Java和我的事情

<?php echo $_POST['namer']; ?>

是PHP的等效

<%= request.getParameter("namer") %> 
在JSP

請打開Firebug或Chrome開發者工具,查找整個請求參數是由您的Ajax請求發送。

希望這會有所幫助。

+0

我打開了螢火蟲,然後打開腳本標籤。該請求已成功將字符串變量發送給php。但在實際的Firefox頁面上,它顯示變量未定義。根據以下建議,我測試了服務器端和客戶端以查看該變量是否設置爲值。在兩種情況下都是這樣,但仍未出現在瀏覽器上。不知道該從哪裏出發。 – user1518003 2013-05-06 19:51:20

+0

請在發送Ajax請求時檢查Firebug中的「Net」選項卡。 打開Firebug - >選擇網絡選項卡 - >點擊XHR選項 ,然後發送您的ajax請求並檢查POST參數。 – Arghya 2013-05-07 05:12:37