2015-04-06 52 views
1

我使用下面的表格爲什麼數據不是從阿賈克斯傳遞到PHP

<form id="dataForm" method="post"> 
    <h2 id="formheader"> Update Description</h2> 
    <div> 
     <label>Product Name:</label> 
     <input class="inputForm" id="orginalName" type="text" name="Name"> 
    </div> 
    <div> 
     <label>New Description:</label> 
     <input class="inputForm" id="newDescription" type="text" name="description"> 
    </div> 
    <div id="theSubmit"> 
     <button id="editDesButton">Submit</button> 
    </div> 
    </form> 
</section> 

和javascript函數

function editDescription(){ 
    xmlhttp = new XMLHttpRequest(); 
    var name = document.getElementById("orginalName"); 
    var Description = document.getElementById("newDescription"); 

    var data_seen = false; 
     // this is a flag to record whether any data has been seen. Used in the guard ofthe alert statement. 
    if (name.value !="" && Description.value !=""){ 
     data_seen = true; 
     xmlhttp.open("POST","editDescription.PHP",true); 
     xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
     xmlhttp.send("Name=" + name.value + "&Description=" + Description.value); 
    } 
    if (!data_seen) { 
     alert("please enter some data"); 
    } 
    } 

submitButton = document.getElementById("editDesButton"); 
submitButton.addEventListener("click", editDescription); 

和PHP的這個小位以下

$Name = $_POST['Name']; 
    $Description = $_POST['description']; 

    if($Name !="" && $Description !=""){ 
    $sql = "UPDATE PRODUCTS SET P_Description = '$Description' WHERE P_NAME = '$Name'"; 
    $conn->exec($sql); 

如果我運行表格並使用action="editDescription.php,那麼sql會運行並且表格會更新爲我想要的樣式,但是噹噹按鈕被點擊時,我在事件上運行javascript值沒有被傳入,我不明白爲什麼,有沒有人有任何指針?

+0

你看到任何JS錯誤控制檯? – Diptendu 2015-04-06 09:17:31

+0

「if(){」?您應該使用javascript控制檯(Chrome上的ctrl + maj + j) – 2015-04-06 09:17:43

+1

表單正在提交,並且您對數據鍵和POST變量使用不同的大小寫? – adeneo 2015-04-06 09:20:28

回答

0

當您使用提交功能時,瀏覽器urlencode(正確)字段。在你的js代碼中,你不是urlencoding。在大多數情況下,如果您在字段或任何其他需要編碼的字符中輸入空格,則會失敗。 第二件事,在下面的行中,你必須爲你的「描述」字段使用一個小寫的「d」。 PHP區分大小寫。 (我建議你總是使用小寫字段名,以免出錯)

嘗試:

xmlhttp.send(encodeURI("Name=" + name.value + "&description=" + Description.value)); 

也許有更多的問題。就像Pierre Emmanuel所說的那樣,使用javascript控制檯,特別是「網絡」選項卡來監視通過電線發送的內容。例如,您也可以看看PHP以var_dump($_POST);接收的內容。 (或var_dump(file_get_contents("php://input"));如果第一個命令失敗。)

0

更改JavaScript代碼的jQuery:

function editDescription(){ 
var name = $('#orginalName').val(); //getting input field value 
var description= $('#newDescription').val(); //getting input field value 
$.ajax({//create an ajax request to Your.php 
type: "POST", 
url: "Your.php", //your php file name 
data:{"name ":name,"description":description}, 
success: function(data) { 
    if (data) { 

     alert(data); 
    } 
    else { 
     alert('Successfully not posted.'); 
    } 
} 
}); 
} 
submitButton = document.getElementById("editDesButton"); 
submitButton.addEventListener("click", editDescription); 

Your.php

$Name = $_POST['name']; 
$Description = $_POST['description']; 

if($Name !="" && $Description !=""){ 
$sql = "UPDATE PRODUCTS SET P_Description = '$Description' WHERE P_NAME = '$Name'"; 
$conn->exec($sql);