2014-01-20 16 views
1

我需要使用jQuery AJAX在HTML表單上從服務器檢索數據,然後將響應數據存儲在php字符串變量中。到目前爲止我的代碼是:使用jQuery的HTML表單AJAX

<form method="post" name="myform" id="myform" action="https://domain.com/cgi-bin/cgi.exe"> 
<input name="exec" value="viewproduct" type="hidden"> 
<input name="customer" value="customer_name" type="hidden"> 
<input name="sku" value="sku_number" type="hidden"> 
<input name="submit" type="button"> 
</form> 
<div id="results"></div> 
<script type="text/javascript"> 
jQuery("#myform").submit(function(e){ 
    var postData = jQuery(this).serializeArray(); 
    var formURL = jQuery(this).attr("action"); 
    jQuery.ajax(
    { 
     url : formURL, 
     type: "POST", 
     data : postData, 
     success:function(data, textStatus, jqXHR) 
     { 
     jQuery('#results').html(data.toString()); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) 
     { 
     alert('fail');  
     } 
    }); 
    e.preventDefault(); 
}); 

jQuery(document).ready(function() { 
    jQuery("#myform").submit(); 
}); 
</script> 

但我還沒有看到任何結果。如果我只是在沒有任何js代碼的情況下正常使用表單,那麼我會直接在瀏覽器上從服務器/數據庫獲取原始響應數據。如何將瀏覽器上的原始響應數據保存到php中的字符串變量中?

+0

你沒有得到失敗警報,對吧?如果#results保持空白,或者它不可見,或者你的php沒有返回任何東西。 –

+0

*「我如何將瀏覽器上的原始響應數據保存到php中的字符串變量?」*沒有意義。你能澄清一下嗎? –

+0

抱歉,我的意思是沒有提交表單中的數據 – Deryck

回答

1

更改submit()處理程序包括這在第一行:

jQuery("#myform").submit(function(e){ 
    e.preventDefault(); // <--- 
    .... 

和/或增加return false;到它的結束。

如果從重裝停止,但不會顯示在您的#results DIV什麼,由AJAX改變你success()使用此解決:

jQuery('#results').html(data.toString()); 

如果顯示的東西,去你的服務器代碼並將您的數據分成單獨的屬性,您的Javascript可以單獨分開使用(如果需要,也可以將它們組合成一個大字符串)。

.html()需要輸入字符串,而不是對象(在此例中爲data)。

+0

謝謝,但它仍然返回「失敗」。 – user1576748

+0

這很好。這意味着你的服務器代碼是你現在需要擔心的。如果你需要幫助,你也可以發佈它 – Deryck

+0

希望我可以,但遠程服務器/數據庫甚至不使用PHP。服務器確實以http響應格式發送響應(如果我使用常規格式)。我需要將該響應捕獲到要分析的文件或變量中。 – user1576748

0

您將無法將Javascript值存儲到PHP變量中,因爲PHP在服務器上運行並向瀏覽器中的JavaScript運行的瀏覽器返回響應。你可以做的就是打電話給你的腳本AJAX,然後使用

$("input[name=customer]").val(data); 

你既可以有一個AJAX調用每個輸入與jQuery設置表單值,也可以分析出返回的字符串來獲得每個值。第一個可能更直接。

如果操作成爲問題,請完全刪除onClick,然後將onClick添加到提交按鈕,該按鈕調用進行AJAX調用的函數。

希望這會有所幫助!

+0

謝謝。其實,我在PHP文件中運行上面的代碼。我試圖在提交表單中的3個值後捕獲服務器發送的HTTP響應數據。 – user1576748