我想通過jQuery發佈表單數據到PHP。這是代碼。jQuery Ajax沒有運行錯誤
------------- HTML表單--------------
<div id="createQuestionBlock">
<form id="createQuestionForm" action="" method="POST">
Question Code: <input id="code" class="createQuestionTextBox1" type="text" name="questionCode"><span id="invalid_1"></span><br>
Question Name: <input id="question" class="createQuestionTextBox1" type="text" name="questionName"><span id="invalid_2"></span><br>
Correct Answer: <input id="answer" class="createQuestionTextBox1" type="text" name="correctAnswer"><span id="invalid_3"></span><br>
Option 1: <input id="option1" class="createQuestionTextBox2" type="text" name="option_1"><span id="invalid_4"></span><br>
Option 2: <input id="option2" class="createQuestionTextBox2" type="text" name="option_2"><span id="invalid_5"></span><br>
Option 3: <input id="option3" class="createQuestionTextBox2" type="text" name="option_3"><span id="invalid_6"></span><br>
Option 4: <input id="option4" class="createQuestionTextBox2" type="text" name="option_4"><span id="invalid_7"></span><br>
Option 5: <input id="option5" class="createQuestionTextBox2" type="text" name="option_5"><span id="invalid_8"></span><br>
<span id="quizCreated"></span>
<input type="Submit" id="questionSubmit" value="Create Question"></input>
</form>
</div>
---------- ------ JAVA SCRIPT JQUERY HANDLING ----------------
function SubmitFormCreationData() {
$("#createQuestionForm").submit(function(e) {
e.preventDefault();
alert("check1");
$.ajax({
url: 'InsertNewQuestion.php',
data: $("#createQuestionForm").serialize(),
dataType: 'json',
success: function(data) {
alert("check2");
var infoCorrect = data.infoCorrect;
if (infoCorrect == 0) {
alert("Quiz Created");
window.setTimeout(delay,2000);
return true;
} else if (infoCorrect == 1) {
$("#invalid_1").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 2) {
$("#invalid_2").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 3) {
$("#invalid_3").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 4) {
$("#invalid_4").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 5) {
$("#invalid_5").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 6) {
$("#invalid_6").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 7) {
$("#invalid_7").text(" Invalid!").show().fadeOut(2000);
return false;
} else {
$("#invalid_8").text(" Invalid!").show().fadeOut(2000);
return false;
}
}
});
alert("check3");
});
}
------------ PHP FILE --- ----------------
<?php
$con = mysql_connect("localhost","root","");
if (!$con)
die("ERROR: ".mysql_error());
$db_con = mysql_select_db("QuestionsDatabase",$con);
if (!$db_con)
die("ERROR: ".mysql_error());
$questionCode = $_POST['questionCode'];
$questionName = $_POST['questionName'];
$correctAnswer = $_POST['correctAnswer'];
$option_1 = $_POST['option_1'];
$option_2 = $_POST['option_2'];
$option_3 = $_POST['option_3'];
$option_4 = $_POST['option_4'];
$option_5 = $_POST['option_5'];
$infoCorrect = 0;
if (CheckCodeField($questionCode) == false)
$infoCorrect = 1;
else if (CheckQuestionAnswerField($questionName) == false)
$infoCorrect = 2;
else if (CheckCorrectAnswerField($correctAnswer) == false)
$infoCorrect = 3;
else if (CheckQuestionAnswerField($option_1) == false)
$infoCorrect = 4;
else if (CheckQuestionAnswerField($option_2) == false)
$infoCorrect = 5;
else if (CheckQuestionAnswerField($option_3) == false)
$infoCorrect = 6;
else if (CheckQuestionAnswerField($option_4) == false)
$infoCorrect = 7;
else if (CheckQuestionAnswerField($option_5) == false)
$infoCorrect = 8;
if ($infoCorrect == 0) {
$rowIDList = mysql_query("SELECT rowID FROM questions");
$currentGreatestRowID = -1;
$rowCount = 1;
while($row1 = mysql_fetch_assoc($rowIDList)) {
if ($currentGreatestRowID < $row1['rowID']) {
$currentGreatestRowID = $row1['rowID'];
}
$rowCount++;
}
$currentRowID = $currentGreatestRowID+1;
$sql = "INSERT INTO questions (rowID,questionCode,questionName,option_1,option_2,option_3,option_4,option_5,option_1_votes,option_2_votes,option_3_votes,option_4_votes,option_5_votes,correctAnswer,pollingStatus)
VALUES (".$currentRowID.",".$questionCode.",'".$questionName."','".$option_1."','".$option_2."','".$option_3."','".$option_4."','".$option_5."',0,0,0,0,0,".$correctAnswer.",0)";
if (mysql_query($sql,$con)) {
echo "Inserted values";
}
else {
echo ("Could not insert values: ". mysql_error());
}
}
/*echo "| ".false." | "."0 | ";
echo "CheckCodeField(questionCode) = ".CheckCodeField($questionCode).", ";
echo "CheckQuestionAnswerField(questionName) = ".CheckQuestionAnswerField($questionName).", ";
echo "CheckCorrectAnswerField(correctAnswer) = ".CheckCorrectAnswerField($correctAnswer).", ";
echo "CheckQuestionAnswerField(option_1) = ".CheckQuestionAnswerField($option_1).", ";
echo "CheckQuestionAnswerField(option_2) = ".CheckQuestionAnswerField($option_2).", ";
echo "CheckQuestionAnswerField(option_3) = ".CheckQuestionAnswerField($option_3).", ";
echo "CheckQuestionAnswerField(option_4) = ".CheckQuestionAnswerField($option_4).", ";
echo "CheckQuestionAnswerField(option_5) = ".CheckQuestionAnswerField($option_5).", ";
echo "infoCorrect = ".$infoCorrect;*/
$items = array('infoCorrect'=>$infoCorrect);
json_encode($items);
mysql_close($con);
//-----------------functions--------------
function CheckCodeField($value) {
$isCodeValid = true;
if (is_numeric($value) == false)
$isCodeValid = false;
if ($value < 100000)
$isCodeValid = false;
if ($value > 999999)
$isCodeValid = false;
return $isCodeValid;
}
function CheckQuestionAnswerField($value) {
$isQAValid = true;
if($value == "")
$isQAValid = false;
if($value == null)
$isQAValid = false;
for($LCV=0; $LCV<(count($value)-1); $LCV++) {
if($value[$LCV] = "'")
$isQAValid = false;
if($value[$LCV] = '"')
$isQAValid = false;
}
return $isQAValid;
}
function CheckCorrectAnswerField ($value) {
$isAnswerValid = true;
if (is_numeric($value) == false)
$isAnswerValid = false;
if ($value < 1)
$isAnswerValid = false;
if ($value > 5)
$isAnswerValid = false;
return $isAnswerValid;
}
//----------------------------------------
?>
現在的問題是,我可以看到第一個警報(分別爲「check1」),第二個警報(「check3」)BU t我看不到警報(「check2」),所以我的假設是錯誤是ajax形式。我已經嘗試直接從HTML頁面運行PHP文件,它能正常工作。出了什麼問題?
-after edit--
所以,我看着做呼應的JSON編碼變更後什麼信息的JSON編碼發送。這是發送的信息{「infoCorrect」:1}。不應該
else if (infoCorrect == 1) {
$("#invalid_1").text(" Invalid!").show().fadeOut(2000);
return false;
}
因爲infoCorrect運行是1
--------------編輯後2 ------------- -------------------------------------------------- ---------------------------------------- 以下是我如何調用SubmitFormCreationData( )功能如上所示。
$(document).ready(function() {
jQueryInitialization();
ButtonsHandling();
SubmitFormCreationData();
setInterval(function() {UpdateData()}, 500);
});
--------------最後編輯(找到解決方案)----------------------- -------------------------------------------------- ----
下面是答案中提到的解決方案的代碼。它不是一個真正的解決方案,而是一種解決方法。我使用後,而不是阿賈克斯,它的工作。還要確保你的jQuery文件是最新的。
function SubmitFormCreationData() {
$("#createQuestionForm").submit(function(e) {
e.preventDefault();
$.post("InsertNewQuestion.php", $("#createQuestionForm").serialize()).success(function(data) {
var infoCorrect = data.infoCorrect;
if (infoCorrect == 0) {
alert("Quiz Created");
window.setTimeout(delay,2000);
return true;
} else if (infoCorrect == 1) {
$("#invalid_1").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 2) {
$("#invalid_2").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 3) {
$("#invalid_3").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 4) {
$("#invalid_4").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 5) {
$("#invalid_5").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 6) {
$("#invalid_6").text(" Invalid!").show().fadeOut(2000);
return false;
} else if (infoCorrect == 7) {
$("#invalid_7").text(" Invalid!").show().fadeOut(2000);
return false;
} else {
$("#invalid_8").text(" Invalid!").show().fadeOut(2000);
return false;
}
});
});
}
檢查開發人員工具的網絡選項卡,請求發生了什麼以及返回的內容。 – jeroen 2013-03-06 18:04:49
是的,我會建議你檢查請求狀態。如果請求正常,你應該得到200。 – sweetamylase 2013-03-06 18:07:33
這是網絡選項卡中的信息。請求URL:http://localhost/QuizAdminWebpage/InsertNewQuestion.php?questionCode = 1&questionName =&correctAnswer =&option_1 =&option_2 =&option_3 =&option_4 =&option_5 = 請求方法:GET 狀態代碼:200 OK – 2013-03-06 18:16:10