2016-02-23 37 views
-1

我已經檢查過這個答案,但所有問題都是不同的問題,只是同一個標題(以防止隨機重複標記)。 這裏是一個Ajax調用過濾點擊按鈕應該發送插入表格數據formmatcat到PHP文件formfilt.php,應該在一個div id爲加載結果resultinsEvent.prevent()默認ajax不從窗體發送數據到php

<script> 
    $(function() { 
    $('#filter').on('click', function(event){ 
     event.preventDefault(); 
     $.ajax({ 
      type: 'post', 
      url: 'formfilt.php', 
      data: $('#formmatcat').serialize(), 
      success: function() {   
       $("#resultins").load('formfilt.php'); 
      } 
     }); 
    }); 
    }); 
</script> 

我設置preventdefault只在div加載不重定向到PHP文件和這工作,但如果我把preventDefault呼應我建通過連接從形式發送這些空值的值的字符串。奇怪的是,如果我刪除preventDefault當然它重定向和加載的PHP文件,但具有正確的值:

道德的故事,形式與ajax調用數據正確的PHP文件,但看起來像preventDefault不要讓這個。在此先感謝

這裏的HTML部分與形式結構

<form id="formmatcat" method="post" action="formfilt.php"> 
. 
. 
various textboxes 
. 
. 
</form> 
+0

是否將此功能附加到「提交」按鈕或標準的「按鈕」? – RamRaider

+0

提交按鈕裏面的形式 – davideb93

+0

如果它是一個提交按鈕嘗試將其更改爲標準按鈕,即:''〜也'成功'回調似乎重新加載相同的頁面〜它應該填充響應到div – RamRaider

回答

0

你在做什麼是Ajax請求到formfilt.php,當這個調用發生,它返回它會被存儲的響應作爲success$.done函數中的一個參數,我將在後面提及,這是您的內容所在。

你在這裏做的是當通話成功時,你簡單地發送一個GET請求到同一頁面。由於GET請求與AJAX POST請求不同,並且沒有POST參數,因此您將無法獲得正確的輸出。

通過簡單地提交表單並讓它進入頁面而不是取消請求,您可以在正確的值直接發佈到頁面時獲得正確的值,當您調用load函數時,重新做一個單獨的AJAX獲取請求。

load實際上是什麼,對$.get是一個粗略的等值,它是$.ajax的簡寫。

Looking at jQuery AJAX docs

jqXHR.done(功能(數據,textStatus,jqXHR){}); 對於成功回調選項的替代構造,.done()方法會替換棄用的jqXHR.success()方法。有關實現細節,請參閱deferred.done()。

基本上,一個$.ajax()調用返回一個promise對象,您可以在完成時將回調關閉。另外請注意,這裏data將是你的PHP文件中的實際內容,因此,如果您重寫你的AJAX調用就像這樣:

<script type="text/javascript"> 
    $(function() { 
     $('#filter').on('click', function(e) { 
      e.preventDefault(); 
      $.ajax({ 
       type: 'post', 
       url: 'formfilt.php', 
       data: $('#formmatcat').serialize() 
      }).done(function(data) { 
       $('#resultins').html(data); 
      }); 
     }); 
    }); 
</script> 

它將再繼續的formfilt.php輸出加載到DIV ID爲resultins

+0

解決謝謝,問題是.load,爲什麼不工作和.html工程?我使用.load在其他形式上做了同樣的事情,它的工作原理是 – davideb93

+0

'$ .load'可以工作,但它對文件應用了一個單獨的請求,之前我們沒有使用實際的第一個調用的ajax輸出,現在我們 - 唯一的區別;) – SidOfc

0

不使用形式,使用輸入沒有形式,並使用按鈕標籤使用的onclick運行功能,如果你使用的形式,將提交和重定向, 我不擅長與jQuery的 阿賈克斯,但如果我是使用JavaScript/XHR

var CB=document.getElementById("filter").value; //get input/filter value 
xhttp = new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4 && xhttp.status == 200) 
     document.getElementById('contain').innerHTML=xhttp.responseText; 
    }; 
var url="formfilt.php?filter="+CB; 
xhttp.open("GET", url, true); 
xhttp.send(); 

,如果你想使用後:

xhttp.open("POST", "formfilt.php", true); 
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xhttp.send('filter='+CB); 

對不起,我也在學習,並且新本,剛開始學習一個星期前,