2014-01-19 115 views
0

我有一個html表單和ajax調用,通過PHP頁面在MySQL中存儲數據。AJAX POST不能使用document.getElementById變量

下面複製了所有三個代碼。 (請注意//)

只要我在ajax調用存儲它們的函數中硬編碼變量,所有這三個工作就可以正常工作。但是,當我註釋掉硬編碼變量並使用常規變量運行它時,它不起作用。

JavaScript的AJAX調用 $( 「#buttonSubmit」)。點擊(函數(){

//var questionID  = obj.Questions[i].questionID; 
//var shortAnswerValue = document.getElementById('txtShortAnswerValue').value;  
//var longAnswerText = document.getElementById('txtLongAnswerText').value; 

var questionID  = "SampleQID"; 
var shortAnswerValue = "Sample Short";  
var longAnswerText  = "Sample Long"; 

$.ajax({ 
    type: "POST", 
    url: "SaveUpdatesTemplate.php", 
    data: "questionID=" + questionID + "&shortAnswerValue=" + shortAnswerValue + "&longAnswerText=" + longAnswerText, 
}); // end ajax function 
    document.getElementById("txtLongAnswerText").reset(); 
}); // end button submit function 

相關的HTML 選擇檢驗或項目階段 選擇檢驗或項目階段

<label for="selectSection">Select Inspection or Project Phase</label> 
<select class="form-control" id="selectSection" name="selectSection"> 
    <option> Select Inspection or Project Phase</option> 
</select> 

<button type="button" class="form-control" id="buttonStart" name="buttonStart" value="List Questions">Start - Click to Populate Question List</button> 
<label for="selectQuestion">Select Task or Question to Update</label> 
<select class="form-control" id="selectQuestion" name="selectQuestion" > 
<option> Select Task or Question to Update </option> 
</select> 

<!-- short answer below --> 
<label for="txtShortAnswerValue">Short Answer</label> 
<select class="form-control" id="txtShortAnswerValue" name="txtShortAnswerValue"> 
<option value="1" selected>worst</option> 
<option value="3">middle</option> 
<option value="5">best</option> 
</select> 

<!-- long answer below --> 
<label for="txtLongAnswerText">Long Answer/Notes</label> 
<textarea class="form-control" name="txtLongAnswerText" id="txtLongAnswerText" rows=3> 
</textarea> 

相關的PHP代碼 //將PHP變量分配給來自客戶端的POST結果

$questionID   = htmlspecialchars(trim($_POST['questionID'])); 
$shortAnswerValue  = htmlspecialchars(trim($_POST['shortAnswerValue'])); 
$longAnswerText   = htmlspecialchars(trim($_POST['longAnswerText'])); 

    //SQL STATEMENT 
    $sql="INSERT INTO Updates (questionID, shortAnswerValue, longAnswerText) 
    VALUES 
    ('$questionID', '$shortAnswerValue', '$longAnswerText')"; 
+0

呃。我無法讓自己讀完。太長。 – bjb568

+0

這是很多信息。不幸的是不是我們需要的信息。什麼是不工作?沒有存儲的值,查詢沒有執行,是PHP拋出一個錯誤,是JS拋出一個錯誤,..?順便說一句:在第一行是什麼'obj.Questions'? – Kenneth

+0

如果您使用的是jQuery,那麼您爲什麼還要使用常規JavaScript? 'document.getElementById('yourId')'是'$('#yourId')'。如果您正在使用庫,請保存鍵盤。 – PHPglue

回答

0

阿賈克斯數據被格式化這樣

data: {questionID: questionID, shortAnswerValue: shortAnswerValue, longAnswerText: longAnswerText}, 

data: {key:value, key2,"staticvalue"} 

jQuery將建立一個去到URL的結束的字符串。

0

你可以這樣做:

data: encodeURI("questionID=" + questionID + "&shortAnswerValue=" + shortAnswerValue + "&longAnswerText=" + longAnswerText); 

的問題是在var questionID的空間,等等。在您傳遞給$.ajax()的對象結束之前,您的data屬性值之後也有一個不必要的逗號。