2011-06-01 33 views
1

我試圖找出做到這一點的最佳方式PHP函數...我使用jQuery數據提交到一個PHP函數,它從DB爲JSON,這是工作發回數據。事情是,在成功的時候,我希望JQuery執行一個PHP函數......並且我不想在第一個AJAX成功的基礎上再做一個AJAX調用 - 尤其是因爲php函數是我的東西已經用在我的頁面上的其他地方這是我的代碼:電話從jQuery的

JQUERY:

$.ajax({ 
    type: "POST", 
    url: post_url, 
    success: function(group) //we're calling the response json array 'tree' 
    { 
     //WANT TO CALL THE PHP FUNCTION HERE 
    } //end success 
}); //end AJAX 

PHP:

<?php 
foreach($groups as $group){ 
    echo '<option value="' . $group->id . '">' . $group->group_name . '</option>'; 
} 
?> 
+1

爲什麼不把你的PHP文件中的附加功能調用? – 2011-06-01 21:14:55

+0

這只是一個例子,或者你真的想避免在javascript中寫一行php嗎? – Jage 2011-06-01 21:15:10

+0

在第一個函數中創建結果時執行該功能。 php函數在服務器上存在,而jQuery在客戶端上。沒有AJAX,他們不能相互交談。 – 2011-06-01 21:16:17

回答

3

在你的PHP腳本,建立你的迴應,只需添加一個額外的屬性,你的對象,它是HTML字符串你想要放入你的頁面,然後讓JavaScript把它放在需要去的地方。你別無選擇,只能在服務器上運行php函數。

+0

你爲什麼不分開你的顯示和你的數據,並處理javascript端的顯示? – Metagrapher 2011-06-01 21:56:31

+0

我同意你的意見。我實際上在他的問題中發表了一個評論,詢問他爲什麼要避免在javascript中編寫它,但決定回答他的問題。 – Jage 2011-06-01 22:34:09

0

你必須要知道,你正在處理的兩種範式在這裏,第一個是服務器端邏輯(PHP),第二個是客戶端邏輯(JavaScript的)。

不幸的是沒有辦法從JS從客戶端調用PHP不執行AJAX調用和渲染要顯示的內容。但是,您可以準備結果並使用所請求的HTML字符串設置AJAX響應的正文。

如果這是不可能的,我建議看看JS框架,將提供幫助者產生select領域選項的不同編號。

0

替代方案:

  1. 。更改備份原來的AJAX調用,這樣,而不是發送回JSON,它只要你想它發回的HTML完全PHP。
  2. 將第二個AJAX調用連接到第一個成功的「內部」,以便爲JSON-> HTML轉換完成服務器的第二次往返。
  3. 接受,有時你需要「複製」呈現規則,當您使用多種語言工作,並使用類似EJS做同樣<option>東西,PHP不會在其他地方。
1

如果你想從你的JavaScript調用一個PHP函數,你將不得不在服務器上的函數中執行一個AJAX請求。這是因爲JavaScript執行客戶端並且PHP執行服務器端。因此,JavaScript不能直接訪問PHP函數。

您可以使用PHP編寫JavaScript,或者你可以從一個JavaScript通過AJAX調用PHP文件。

您可以使用JavaScript函數複製PHP函數的功能嗎?

會變成這樣,或者你類似的東西,工作方式:

$.ajax({ 
    type: "POST", 
    url: post_url, 
    success: function(groups) //we're calling the response json array 'tree' 
    { 
     for(group in groups){ 
      document.writeln("<option value='"+groups[group].id+"'>"+groups[group].group_name+"</option>"; 
     } 
    } 
}); //end AJAX