2012-02-19 74 views
0

我有一個可編輯的(jEditable)下拉列表類別。其中一個選項是「新類別」。從PHP響應中觸發jQuery函數

如果用戶選擇「New Category」並使用Ajax提交表單我希望PHP觸發一個jQuery函數,該函數將打開一個覆蓋對話框並提示用戶輸入。

我該如何讓PHP觸發jQuery功能?

PHP代碼...

function update() 
{ 
    $id = $this->input->post('id'); 
    $value = $this->input->post('value'); 

    $data = array('category_id' => $value); 
    $this->db->where('id', $id); 
    $this->db->update('transactions', $data); 

    $category = new Category(); 
    $category->where(array('id' => $value)); 
    $category->get(); 

    if ($value == 0) { 
     // Trigger jQuery function 
    } else { 
     echo $category->name; 
    } 

} 

jQuery的功能我想觸發(它是通過一個按鈕當前觸發)...

//===== UI dialog =====// 
$("#new-cat-input").dialog({ 
    autoOpen: false, 
    modal: true, 
    buttons: { 
     Ok: function() { 
      $(this).dialog("close"); 
     } 
    } 
}); 

$("#open-new-cat").click(function() { 
    $("#new-cat-input").dialog("open"); 
    return false; 
}); 
+0

您省略了執行一段代碼 - 也就是JavaScript函數,使Ajax調用,而最重要的是,處理:http://api.jquery.com/jQuery.ajax/
具有自動填充文本字段w3cschool例子響應。 – 2012-02-19 01:18:02

回答

0

How to call a JavaScript function from PHP?

我建議你閱讀這問題回答,然後返回字符串(或回顯出)

<script type="text/javascript">$("#new-cat-input").dialog("open");</script> 

在適當的位置

其實,我收回我的答案,因爲這將導致在執行腳本時或任一不知道所述的具有EVAL這個腳本來執行它。

堅持發送ajax請求並處理其他人建議的響應。

也許你需要返回整個頁面,並調用只返回一些數據或頁面fragements(可追加到的div)

2

不能triggure在客戶端與服務器調用的東西來區分像php這樣的代碼,但jQuery有一個成功的方法,在ajax調用完成後執行。

$.ajax({ 
    url:"someurl.php", 
    success: function() 
    { 
    $('yourSelector').yourfunction(""); 
    } 
}); 

此外,您可以通過表單數據到PHP網頁,並返回HTML/JavaScript或傑森,要麼它注入到頁面或解析/運行代碼。
繼承人一些有用的鏈接
AJAX文檔:http://www.w3schools.com/php/php_ajax_php.asp