jQuery 调用从视图到 cakePHP 函数
jQuery call from view to a cakePHP function
在视图中,我有一个这样的下拉列表:
<div class="input select"><label for="customer">Customer</label><select name="data[Project][customer_id]" id="customer">
<option value="16">Customer1</option>
<option value="17">Customer2</option>
</select>
我试图用jQuery做的是,无论是在页面加载还是下拉选择选项更改时,jquery都会使用给定的选项值调用控制器函数,并从该函数获得预期的回报。以下是控制器部分:
public function getInitials($id){
$this->autoRender = false;
if($this->request->is('ajax')){
$initials = $this->Customer->getInitialsById($id);
echo json_encode($initials);
}}
JQuery不是我擅长的东西,但我做了研究,并试图采用一些类似的功能并使其工作,但没有什么是简单的工作,我觉得我做错了什么。这是jQuery:
jQuery(document).ready(function($){
$('#customer').change({
var initials = "";
$("select option:selected").each(function(){
initials = "<?php echo Router::url(array('controller'=>'projects','action'=>'getInitialsById')) ?>"
});
$("div").text( initials );
});
任何帮助都非常感谢。
您需要正确设置 AJAX 调用:http://api.jquery.com/jQuery.ajax/, http://api.jquery.com/jQuery.getJSON/
此外,还需要在 AJAX 调用中提供新选择的customer <option>
的value (id)
,如 getInitials($id)
函数声明中所定义。请注意,您请求的是getInitials
而不是getInitialsById
,因为后者被前者称为。
最后,我不认为echo
会奏效。你需要做$this->response->body(json_encode($initials));
(http://book.cakephp.org/2.0/en/controllers/request-response.html#CakeResponse::body)
在文档加载时调用 AJAX 调用是没有意义的,因为这发生在从下拉列表中选择该选项之前。
因此,要在选择选项后进行 AJAX 调用,请添加以下代码:
$('#customer').change(function(){
var data = $('#inputEl option:selected').val();
$.ajax({
type:'POST',
async: true,
cache: false,
url: <?php echo Router::url(array('controller'=>'projects','action'=>'getInitialsById')) ?>,
success: function(response) {
jQuery('[ID OF ELEMENT TO HOLD REPONSE (OPTIONAL)').html(response);
},
data: data
});
return false;
})
尚未进行测试,但这应该有效。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- CakePHP错误:在非对象上调用成员函数get(),使用cakejavascript助手时出错
- jQuery 调用从视图到 cakePHP 函数
- CakePHP - 从视图中调用组件的函数,并在单击按钮时执行它
- 如何在 Cakephp 中调用模型或控制器中的 javascript 函数
- 带参数的CakePHP控制器函数不显示javascript
- Cakephp更改图像onclick,把id和函数调用
- Cakephp javascript onclick提交函数在视图
- 如何使用Cakephp调用Javascript函数
- 如何在cakephp的视图文件中调用函数
- CakePHP:调用一个外部Javascript函数
- Cakephp, JsHelper调用一个javascript函数"更新"
- Javascript中的Set::combine等cakephp函数