2010-09-17 65 views
0

我有一個運行httpd的嵌入式應用程序用於Web服務器。在主頁上我有兩個按鈕。其中用了jQuery用下面的代碼添加Click事件:

$獲得( 「example.cgi」);

另一個按鈕是一個空白表單的提交按鈕(即表單標籤以及type =「submit」的輸入以外的表單不包含任何字段)。表單的方法設置爲「get」,動作設置爲「example.cgi」。當我按下按鈕時,腳本失敗。當我按下按鈕二時,嵌入式設備會作出相應的響應。

我真的很想在整個項目中使用JQuery(例如,特別是我沒有在我的頁面上使用空白表格......),但是我無法弄清楚在空白區域之間會有什麼區別用一個方法「get」和一個JQuery $ .get();形成。有誰知道可能會發生什麼?

UPDATE:

的全部HTML和JS代碼 -

<!doctype html> 
<html> 
<head> 
<title>LCRFLC on the WEB</title> 
<script type="text/javascript" src="jquery/jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() 
{ 
    // add click events 
    $("#off").click(function(event) 
    { 
     $.get("rflcc.cgi", { cmd: "RAMP", lvl: "0" }); 
    }); 
    $("#fon").click(function(event) 
    { 
     $.get("rflcc.cgi"); 
    }); 
}); 
</script> 
</head> 
<body> 
<h1>TEST PAGE FOR RFLC CONTROL AND STATUS</h1> 
<input type="button" value="Off" id="off"> 
<input type="button" value="Full On" id="fon"> 
<form method="get" action="rflcc.cgi" id="alt" name="alt"> 
alternate method 
<input type="submit" value="Another try" name="altsubmit"> 
</form> 
<br> 
<textarea cols="80" rows="50"></textarea> 
</body> 
</html> 

這可能需要多一點的解釋了,所以我需要在一個很短的嘗試。這兩個點擊事件的唯一原因是不同的,所以我可以用一個負載嘗試兩個不同的事情(BC,我必須每次都用這個靜態代碼刷新嵌入式設備...)。儘管點擊事件中的那些方法都不起作用。然而,空白表單卻行得通,而我原來的問題是那個空白表單和jquery在'fon'按鈕的點擊事件中的區別是什麼?我認爲他們應該表現得一樣...

+0

「失敗」是什麼意思?這兩個不相同 – NullUserException 2010-09-17 12:08:50

+0

不。後臺代碼從未運行JQuery get。它運行空白表單提交。看起來好像httpd甚至不會將JQuery看作接收信息。但是,我想知道爲什麼它看到一個JQuery與空白表單method = get不同。我認爲在背後的信息會看起來相同,不是嗎? – trh178 2010-09-17 12:14:05

+0

你可以發佈JavaScript/jQuery代碼和HTML嗎? – Jeff 2010-09-17 12:19:14

回答

1

由於@Nithesh評論,$。員額()是真的,當你沒有得到信息反饋的工作的工具。作爲獎勵,POST請求不應該被瀏覽器緩存,但GET請求可以,理論上這可能是你的問題。

此外,您的空白表格並非真正的空白 - 提交按鈕有一個名稱和值作爲參數提交。是否有可能您的cgi腳本是問題所在?這似乎不大可能,但我不得不問...

爲了診斷,你可能想要做這樣的事情:

$("#fon").click(function(event) { 
    $.post("rflcc.cgi", function() { alert "Done!"; }); 
}); 

會告訴你,如果該請求是發生在所有。如果您還沒有,請查看Firefox的FireBug插件,作爲幫助診斷Ajax內容的工具。

+0

我有螢火蟲,即時通訊不太確定要看什麼。對於這樣的問題之前,我總是檢查'網絡'選項卡。我可以看到請求什麼時候發生,什麼時候發生,但是關於我在這方面知識的程度。即時通訊將嘗試你剛剛發佈的內容,但我想看看這個作品是否有效。 – trh178 2010-09-17 14:49:25

+0

發現問題...完全無關。我標記了你的答案,因爲它讓我發現了真正的問題。謝謝 – trh178 2010-09-17 15:18:38

3

您確定您正確地使用$.get。它異步獲取頁面並執行您指定的回調函數。另一方面,當空表單被提交時,頁面被改變。

這將適用於你。

HTML

<button id="get">Get</button> 
<div id="target"></div> 

Javascript

$('#get').click(function() { 
    $.get('example.cgi', function(data) { 
     $('#target').html(data); 
    }); 
}); 
+0

我已經閱讀了jQuery獲取文檔,和它說我可以用它僅調用。獲得$(「example.cgi」);.我可以嘗試上面的代碼,但只是爲了確保。 – trh178 2010-09-17 12:35:02

+0

它合法地調用$ .get('example.cgi'),但返回的數據會丟失。我不知道爲什麼它甚至被允許,但這是它的工作原理。如果你想對返回的數據做些什麼,你必須定義一個回調函數。如果你有興趣,有一個更簡單的選擇。檢查JQuery文檔中的「加載」函數。 – 2010-09-17 12:48:46

+0

也許我們已經達到了我的問題的來源。在這一點上,我不想對返回數據做任何事情。上面的這些按鈕打開和關閉燈。我所關心的是'rflcc.cgi'被調用。一旦它發生,無論它返回什麼都可能被丟棄。我應該使用jQuery負載嗎? (感謝您的耐心,我是jquery的新手) – trh178 2010-09-17 12:56:08