2012-04-01 83 views
0

我想在用戶點擊確定框上的確定後插入值。現在確認框運作良好。我可以看到的唯一問題是,當用戶單擊「確定」時,我希望INSERT VALUES發生在單獨的頁面上(insertQuestion.php),但我不希望表單被導航到該頁面。我希望表單可以按照它所做的方式進行導航,可以根據具體情況提交到自己的頁面或提交到create_session2.php。如何修復這個jquery低於

那麼如何在用戶點擊確定框中的'確定'之後將用戶插入到數據庫而不導航到該頁面(insertquestion.php)?

我一直在使用jQuery來執行AJAX請求嘗試,但這種失敗(jQuery的準則是在底部)

下面

是哪裏出現的確認框中的JavaScript代碼,如果確認是「OK」,它提交表單:

function showConfirm(){ 

      var confirmMsg=confirm("Do you want to Proceed" + "\n"); 

      if (confirmMsg==true) 
      { 
      submitform(); 
     } 
    } 

function submitform() 
      { 

     var QandAO = document.getElementById("QandA"); 

      QandAO.submit(); 

      } 

下面是插入值碼(已連接到數據庫,並insertQuestion.php頁詭計公佈的值從之前的頁面):

 $insertquestion = array(); 

     { 
     $insertquestion[] = "' ". mysql_real_escape_string($_POST['id']) . "', ' ". mysql_real_escape_string($_POST['qid']) . "'"; 
     } 

     $questionsql = "INSERT INTO Question (SessionId, QuestionId) 
     VALUES (" . implode('), (', $insertquestion) . ")"; 

mysql_query($questionsql); 

現在下面是PHP和表單標籤凡打算值要插入來自:

function insertQuestion(form) { 

     var $tbody = $('#qandatbl > tbody'); 
    var $tr = $("<tr class='optionAndAnswer' align='center'></tr>"); 
    var $qid = $("<td name='qid' class='qid'>" + qnum + "</td>"); 
    //I am trying to insert the $qid above in the INSERT VALUES 

    } 

    </script> 

    <form id="QandA" action="<?php echo htmlentities($action); ?>" method="post" > 

<h1>CREATING QUESTIONS AND ANSWERS: SESSION (<?php echo $_SESSION['id'] ?>) 
//I am trying to insert the $_SESSION['id'] above in the INSERT VALUES 

<table id="qandatbl" align="center"> 
<thead> 
<tr> 
    <th class="qid">Question No</th> 
</tr> 
</thead> 
<tbody>//the $qid would go here</tbody> 
</table> 

<p><input id="submitBtn" name="submitDetails" type="submit" value="Submit Details" onClick="myClickHandler(); return false;" /></p> 

</form> 
+0

請添加您的html以及 – Gavriel 2012-04-01 02:35:24

回答

0

在你insertQuestion.php,執行你的MySQL查詢後,返回響應返回給客戶端。這樣

mysql_query($questionsql); 
echo "Added"; 

所以在您的文章調用一些東西,數據變量將獲得價值一旦jQuery的崗位撥打的電話給inert.php文件

假設你的提交按鈕的ID是submitBtn

$("#submitBtn").click(function() { 

    var fieldvalue = $("#QandA").val(); 
    $.post("insertQuestion.php", { field1: fieldvalue} ,function(data){ 
     //data variable now has the reponse from the ajax call 
     alert(data); 
    }); 
    return false; // preventing the typical form submit 
}); 

如果你調用一個提交按鈕點擊上面的JavaScript,你應該在年底做了return false,否則會爲正常的形式提交,你將不能夠注意到它做了一個AJAX帖子。

編輯:按照問題更新

刪除提交按鈕的onclick事件,你已經在你的javascipt的

<input id="submitBtn" name="submitDetails" type="submit" value="Submit Details" /> 
在JavaScript

結合它(在點擊按鈕),你正在調用窗體上的val()函數。你不會得到表單內容。你想發送到insertQuestion.php頁面,這是一個文本框的值?然後閱讀特別喜歡這個

var fieldValue=$("#txtAnswer").val(); 

假設你有一個ID爲「txtAnswer」像這樣一個文本框在頁面

<inpuy type="text" id="txtAnswer" /> 

如果您想發送整個表單,您可以使用序列化功能

$.post("insertQuestion.php", $("#QandA").serialize ,function(data){ 
     //now you posted the entire form to insertQuestion.php 
     alert(data); 
    }); 

http://api.jquery.com/serialize/

使用Firebug看什麼數據你在$。員額電話(網絡選項卡)發送,如果有在頁面(控制檯選項卡)的任何腳本錯誤

+0

嗨,我可以問你編輯我的jquery到你在說什麼,因爲我瞭解它的一些,但不是全部 – user1304328 2012-04-01 02:50:32

+0

@ user1304328:提供給我更多的細節。我們可以計算出來 – Shyju 2012-04-01 02:51:52

+0

好吧,如果你能容忍我,我會更新的完整代碼顯示錶單標籤和HTML代碼,如果你能容忍我,因爲你我真的需要這個幫助:) – user1304328 2012-04-01 02:55:56

0

什麼是Ajax的功能失效?對我來說,它看起來不錯,而且可能應該是做你想做的事。我想也許添加

return false; 

的點擊功能的最後一行,否則可能提交表單兩次(第二次的方式,你不希望)

$("#submitBtn").click(function() { 
    var form = $("#QandA"); 
    $.post("insertQuestion.php", //send it to yourpage.php 
     { 
      id: form.find("[name=id]").val(), 
      sessionNum: form.find("[name=sessionNum]").val() 
     }, function(data) { 
     alert("Your Questions has been submitted"); 
     } 
    ); 
    return false; 
}); 

和你的HTML有是這樣的:

<input id="id" name="id"> 
+0

我會擔心稍後插入值,我只是想要一個警報來顯示它已經認識到它已經進入'insertQuestion.php'頁面 – user1304328 2012-04-01 02:51:34

0

你submitform()函數執行的形式通過JavaScript提交如果人點擊OK按鈕。問題是你的AJAX jQuery代碼甚至沒有運行,因爲提交不會觸發點擊事件。

爲了讓您的AJAX調用正常工作,你需要修改submitform()函數來完成的AJAX直接提交。作爲學習的開始,從jQuery代碼示例中的匿名函數中獲取代碼,並使用它替換submitform()函數中的代碼(之後也會返回false - 這將阻止OK按鈕執行「默認」行爲)。