2010-07-30 58 views
0

在我的index.php的底部,我有一個Javascript函數配對<script>標籤。我有一個點擊處理程序調用產生Prototype.js Ajax請求的函數。原型Ajax.Request在某些情況下不會執行

該版本不起作用(沒有請求),雖然myFunction本身被調用。

function myFunction(fr, fw) { 
    new Ajax.Request('/ascript', { 
     method: 'post', 
     parameters: { a: fr, b: fw }, 
     onSuccess: function(transport) { }, 
     onFailure: function(request) { } 
    }); 
} 

但是當我添加alert(「something」);行腳本php腳本被稱爲。

function myFunction(fr, fw) { 
    new Ajax.Request('/ascript', { 
     method: 'post', 
     parameters: { a: fr, b: fw }, 
     onSuccess: function(transport) { alert("here"); }, 
     onFailure: function(request) { } 
    }); 
} 

可能是一些奇怪的空白問題?我的語法中是否有錯誤?

+0

你怎麼知道這個請求沒有被創建?您是否嘗試安裝Firefox「TamperData」插件來跟蹤HTTP請求,甚至是Firebug?簡單地改變這種回調應該不會影響HTTP請求是否被創建,所以無論是*被創建,否則第二個測試都有其他不同之處。 – Pointy 2010-07-30 14:18:17

+0

請求的腳本是我自己的,我在那裏有error_log句子,我可以看到它沒有被執行。 – texmex5 2010-07-30 14:36:23

回答

0

所以我發現了這個問題。問題是我如何添加事件處理程序,以我的「按鈕」

最初(在我的問題給出兩個例子)我有:

echo "<a href='' ><p id='button' onclick='myFunction(" .$a .", " .$b.");'>Click</p></a>"; 

周圍<p>的鏈接標籤是ofcourse一個壞主意...

這工作:

echo "<a href='' onClick='Event.stop(event);'><p id='button' onclick='myFunction(" .$a .", " .$b .");'>Click</p></a>"; 

感謝所有對你的答案。我想這個故事的寓意是,從Javascript本身看起來更遠,看看它被調用的地方以及可能會被打破的地方。

0

您應該嘗試onComplete事件。原型有時不屬於任何onSuccessonFailure但所有請求將被onComplete

覆蓋還嘗試與包裹塊Try - Catch Ajax請求,它可能會有所幫助。

+0

嘗試捕獲沒有幫助,添加警報(「Blah」)到onComplete結束在相同的結果 - 東西開始工作。但我不希望每次請求完成時都顯示警報:) – texmex5 2010-07-31 06:32:52

相關問題