2010-08-19 60 views
0

我認爲這很容易,但我不知道什麼是正確的語法。我通過JQuery AJAX提交表單 - 你知道jquery ajax後標題問題(我認爲)

$j.ajax({ 
    type: "post", etc..... 

但我需要確保的形式是能夠被處理Java是否禁用。在ajax發送中是否有一個「標題」,可用於將其標識爲正常發佈,以便完成ajaxed或正常php發佈後,我是否可以返回發送頁面。如果不是ajaxed,我可以使用if($update): header('location: ...'); endif;,但如果使用ajax請求,它會停止ajax成功函數。希望使得感覺

回答

1

是,jQuery的做一個AJAX請求時設置了一個自定義標題形式工作沒有任何一種JS,所以如果你在一個基本的PHP文件,你會開始

<?php 
if(count($_POST) > 0) { 
    //process form entries 
} else { 
    //output form 
} 
?> 

那麼你會添加一些jQuery的劫持提交點擊所以

$('input[type=submit]').live("click", function(e) { 
    e.preventDefault(); 

    //ajax post here 

    //IE 
    return false; 
}); 
+0

謝謝Razor,但是爲什麼if($ _ SERVER ['X-Requested-With'] =='XMLHttpRequest'):不起作用的原因? – user351657 2010-08-19 09:40:31

+0

再次剃刀 - 得到它....我像往常一樣厚。 define('IS_AJAX_REQUEST',isset($ _ SERVER ['HTTP_X_REQUESTED_WITH'])&& strtolower($ _ SERVER ['HTTP_X_REQUESTED_WITH'])=這是一個有用的「piece」,其他人會接受你的回答, ='xmlhttprequest'); 如果(IS_AJAX_REQUEST){// 這是一個AJAX請求,做AJAX具體的東西 } 其他{// 這不是一個AJAX請求 } – user351657 2010-08-19 09:47:35

0

不是真的知道標題,但也許更簡單的解決方案是簡單地調用處理頁面的url與一個額外的參數,當你在ajax上下文中做?

然後頁面可以簡單地檢查參數是否存在,並根據它進行適當的操作。

+0

感謝薩姆認爲一個,因爲它很明顯,只是想知道如果泰雷是一個「乾淨」的方式做到這一點 – user351657 2010-08-19 09:33:05

+1

請參閱我的答案。沒有必要設置額外的參數 – Razor 2010-08-19 09:35:42

0

你必須做很多工作或變通,但你可以使用<noscript>和JavaScript代碼的組合來獲得你所需要的。

WWW FAQs: How do I detect JavaScript in the user's browser?

希望幫助您開始使用。

X-Requested-With : XMLHttpRequest 

編輯russp的服務器端PHP代碼:

define('IS_AJAX_REQUEST', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
    strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'); 
if(IS_AJAX_REQUEST) 
    { //This is an AJAX request, do AJAX specific stuff } 
else 
    { //This is not an AJAX request } 
0

通常的方式來處理Ajax表單請求是寫