2016-02-06 35 views
0

我正在用這個ajax調用加載一個php頁面。第一次效果很好,但我想重新加載(用戶可以嘗試多個答案)。但是,在第二次加載時,theAnswer變量保留第一次嘗試的值。刷新一個jQuery變量的值

$('body').on("click", "#answer-submit", function() { 
    var theAnswer = $('#challenge-answer').val(); 
    //alert(theAnswer); 
    $.ajax({  
    type: "POST", 
     url: "ajax/answer.php", 
     data: { answer : theAnswer }, 
     dataType: "html", 
     success: function(msg){ 
      if(parseInt(msg)!=0) { 
       $('#answer').html(msg); 
      } 
     } 
    }); 
}); 

下面是HTML

<div id=question-form> 
    <input type=text name=answer id=challenge-answer class=clue-input /><br /> 
    <button id=answer-submit>GO</button> 
</div> 
+1

你檢查瀏覽器控制檯?可能會因某種錯誤而死亡。 –

+0

您是否嘗試在服務器端記錄請求?是服務器端獲得你第二次嘗試的預期? – timhysniu

+0

@Nordenheim從控制檯沒有什麼幫助。 –

回答

1

在第一次嘗試後,另一個#challenge-answer被添加到DOM?如果是這樣,你的選擇器將繼續抓住第一個。在這個例子中,我添加了console.log($('[id="challenge-answer"]'));,所以每次點擊GO後,您都可以看到是否有多個。

http://jsfiddle.net/L4h4LLL4/4/

HTML:

<div id="fiddleBody"> 
    <div id=question-form> 
    <input type=text name=answer id=challenge-answer class=clue-input /><br /> 
    <button id=answer-submit>GO</button> 
    </div> 
</div> 

JS:

$('#fiddleBody').on("click", "#answer-submit", function() { 
    console.log($('[id="challenge-answer"]')); 
    var theAnswer = $('#challenge-answer').val(); 
    alert(theAnswer); 
    /* 
    $.ajax({  
    type: "POST", 
     url: "ajax/answer.php", 
     data: { answer : theAnswer }, 
     dataType: "html", 
     success: function(msg){ 
      if(parseInt(msg)!=0) { 
       $('#answer').html(msg); 
      } 
     } 
    }); 
    */ 
}); 
+0

非常像你擁有它。我將html添加到原始問題中。順便說一句,這可能沒有關係,但相同的HTML首先從一個PHP文件加載,其中原始答案被提交,然後我使用第二頁(answer.php)來處理答案是否正確並提供再次回答表格。 –

+0

如果您在不刪除第一個答案的情況下再次提供答案表單,那麼您的頁面上可能有多個「challenge-answer」(可能在另一個上面)。在更新的小提琴中,如果您查看控制檯,您將能夠看到每次點擊GO時有多少人。到底你如何「再次提供答案」? – gfrobenius

+0

因此,從您的更新中我收集到,我應該爲第二頁創建第二個函數,併爲輸入文本使用新的ID。但是,我會在第三次提交時遇到同樣的問題,對嗎? –

0

我建議你做的onclick直接套用在您的按鈕不是身體

var button = $(#answer-submit); 
button.onclick(function(e){ 
    e.preventDefault(); 
    var chanswer= $('#challenge-answer').val(); 
    $.ajax({  
     type: "POST", 
     url: "ajax/answer.php", 
     data: { answer : theAnswer }, 
     dataType: "html", 
     success: function(msg){ 
     if(parseInt(msg)!=0) { 
      $('#answer').html(msg); 
     } 
    } 
}); 

});

+0

謝謝。我必須將它應用到body,因爲在頁面加載後html被添加到DOM。只是clic()函數不會找到它。 –

+0

我試着添加preventDefault(),但是這並沒有改變結果。 –

+0

preventDefault被調用只是爲了阻止常見情況下的默認操作頁面重新加載,如果您可以給我們一塊您的html代碼我認爲這將是更有幫助 –