2012-04-02 68 views
0

標題可能聽起來令人困惑,但事實上並非如此,我只是不知道如何解釋它。所以我的主頁有一個腳本,它爲我網站的一部分加載一個外部的php文件。在該PHP文件中,我需要在主JavaScript文件(加載它的文件)內調用帶有參數的函數。我試過.bind("click", parameter1, paramter2, loadFunction);,這個的擴展版本和.click({...}),但我不能得到它的工作。我會如何去做這件事?我不想把我需要調用的內部代碼放到php文件中,因爲它調用了另一個Ajax請求(是的,我的網站是ajax很重),不想讓人們很容易找到它,我寧願它埋在我的JavaScript文件中。謝謝你的幫助!如果您需要更多信息,請告訴我。jQuery將參數從ajax加載頁面傳遞給外部函數

回答

1

你可能會說這不是令人困惑,但它是一點點。 ;-)我的回答是基於以下事件流程:

  1. Ajax調用是由主JS中定義的函數調用的。
  2. PHP對給定的參數起作用,執行「某些事情」並返回結果
  3. 返回的結果可能不包含更多的腳本來執行,但是更多的腳本根據返回結果的內容執行。

此聲明:「我寧願將它埋在我的JavaScript文件中」爲我發送紅旗。如果有人想知道你的網站正在做什麼,他們會知道腳本是否在縮小的JS文件中。我認爲返回腳本實際上會更安全,因爲範圍將會受到限制。

這就是說,我不會返回一個腳本。這個問題的前提是它自己的答案。

  1. 進行Ajax調用,在查詢字符串或POST數據中將參數傳遞給PHP。
  2. 您的PHP處理參數並返回響應。
  3. Ajax調用的成功函數抓取響應,可能使用JSON進行編碼,以便於處理,並且在主應用程序中啓動一個函數調用。

老實說,我不知道bindclick的故障甚至是因素的影響。您是否無法首先綁定第一個Ajax調用的點擊?我想如果你的網站是Ajax重的,你已經知道如何做到這一點,不是嗎?

[迴應置評]

如果你的PHP生成並返回JSON,你可以做任何你想做的事情:

{ 
    "content": "<div>Some HTML</div>", 
    "action": "append_and_refresh", 
    "recordsDeleted": 5 
} 

在成功函數所有你需要做的是過程但它是你想要的:

success: function(data) { 
    $('#someDiv').html(data.content); 
    if(data.action == "append_and_refresh") { 
    doAppend(); 
    doRefresh(); 
    } 
    recordsDeleted += data.recordsDeleted 
} 

一個故意簡化的例子,但希望你得到的照片!

+0

首先,非常感謝!其次,如果他們想要查看代碼,你確實提出了一個很好的觀點。你的答案的問題是我的PHP不只是回顯一些返回文本/變量。它返回一些HTML,然後我將它添加到容器中。我如何發送多個返回給用戶,追加一個並將另一個存儲在變量中?這是我最近的主要問題。我只是試圖獲得工作要求,並且使用了當時我能想到的任何方法。現在我想到了,在這種情況下他們毫無意義,對結果沒有任何影響。 – 2012-04-02 00:53:01

+0

增加了一個愚蠢的例子,你可以用一個JSON響應來做什麼。 – 2012-04-02 01:02:24

+0

非常感謝您的幫助。你的例子很棒! – 2012-04-02 01:05:25