2014-04-07 82 views
0

鏈接到一個網頁,並觸發AJAX我試圖讓一個div按鈕觸發AJAX和鏈接到的Ajax是發佈數據的頁面。我有ajax在點擊工作,但似乎無法讓鏈接工作,所有我試圖讓鏈接工作的方式什麼也不做。通過相同的按鈕

我有一個div按鈕:

<div class="cman shadow1" id="search_button" value="carSearch"/> 
    Start Search 
</div> 

觸發:

function carSearch() 
{ 
    $.ajax({ 
     type: "POST", 
     url: 'searchpost.php', 
     data: 
     { 
      mpg : $('.mpg').val() 
     }, 
     success: function(data) 
     { 
      alert("success! "+$('.mpg').val()); 
     } 
    }); 
} 

編輯:

覺得我應該提到,我希望鏈接的頁面是大氣壓:

<?php 
session_start(); 

$conn = mysql_connect('localhost', 'root', ''); 
mysql_select_db('cdb', $conn); 

if(isset($_POST['mpg'])) 
{ 
    $mpg = (int)($_POST["mpg"]);   

header("Location: home.php"); 
exit; 
} 
?> 

我的Wi sh使用它來收集用戶輸入的所有搜索字段,然後加載搜索結果頁面。上面的代碼僅用於測試。

我提到這是因爲用戶@Doge建議在ajax的成功處理程序中執行document.location.href =「searchpost.php」,這確實會導致頁面發生更改,但頁面未運行isset和重定向,所以js變量沒有發佈,或者它是,但這個頁面的實例並沒有得到它。

的isset和重定向做的工作與使用XHR網絡選項卡我的網頁上的頁面是重定向到出現。

+1

你不能重定向和同時發送ajax請求。你必須先等待ajax請求完成「發送」部分。 (爲什麼你的div有一個href屬性?一個值屬性?一個類型屬性?) –

+1

如果你重定向,而ajax請求仍在加載請求將被取消。在您的ajax調用的成功處理程序中重定向。 ('document.location.href =「searchpost.php」')。請注意,這將是一個GET請求。 – Halcyon

+0

div作爲類型按鈕?它將無法使用輸入類型=「提交」或

回答

1

如果你必須通過JS做到這一點,然後創建一個隱藏的形式,填充它,並提交:

HTML:

<form method="post" id="hiddenform" action="searchpost.php"> 
    <input type="hidden" name="mpg" id="mpg"/> 
</form> 

JS:

function carSearch() 
{ 
    $('#mpg').val(yourjsvariable); 
    $('#hiddenform').submit(); 
} 
+0

我不明白這是如何幫助我的。我沒有通過選擇通過js做這個,我發佈的變量是從jQuery我沒有其他方式獲得這些變量到PHP中使用除了與ajax的MySQL。我只想讓一個按鈕將jquery值發佈到我同時鏈接到的頁面,以便我可以實際使用這些變量。 – Vereonix

+0

@Tom這正是這樣做 - 它把js變量(在我的例子中稱爲'yourjsvariable')以不可視的形式隱藏到隱藏字段中,然後提交表單,它將同時發佈數據和重定向 - 完全是你要求。如果您有更多問題,請發表評論。 – Steve

+0

ooooh,對不起,我很累,對js來說還是一個新的東西。所以我會擺脫我目前的ajax,並讓我的按鈕調用你所做的功能?隱藏的表單是否需要進入按鈕div,或者不要緊,因爲它是通過id綁定到js的。 – Vereonix