从JS文件调用控制器功能

时间:2015-06-30 07:37:56

标签: javascript jquery ajax

我使用Yii框架,我想从JS文件中调用控制器函数,

我在JS文件中的ajax代码:

$.ajax({
    type: "POST",
    url: "operator/checkDisabledDates",
    data: {
        id: 1
    },
    success: function(data) {
        alert('success');
    },
    error: function(data) {
        alert("Fail");
    }
});

其中checkDisabledDates是我的控制器方法名称,operator是我的控制器名称。

我错误地形成了这样的网址,

www.example.com/operator/agent/id/4/operator/checkDisabledDates

我的ajax网址只是附加在现有网址的最后位置, 我尝试了不同的组合,如

url: "/operator/checkDisabledDates"
url: "../operator/checkDisabledDates"
url: "../checkDisabledDates"
没什么用的, 但是当我使用下面的语法时,它起作用了,

url: "../../checkDisabledDates" 

无论如何没有像这样的硬编码点(。)???

3 个答案:

答案 0 :(得分:1)

我建议不要使用相对路径来调用控制器。 尝试将您的域用作上下文

var domainName = 'yourSite.com'
url: domainName+"operator/checkDisabledDates"

答案 1 :(得分:1)

我正在使用我的项目并且它正在为我工​​作,请尝试这个 -

JS文件中定义全局变量,例如。 -

var url_path = document.location.origin+document.location.pathname;

现在你可以像这样使用

url: url_path+'?r=operator/checkDisabledDates'

url: url_path+'operator/checkDisabledDates'

答案 2 :(得分:0)

使用此:

data = {};
data.r = 'operator/checkDisabledDates';
data.id = 1;

$.ajax({
type: "POST",
url: "index.php",
data: data,
success: function(data) {
    alert('success');
},
error: function(data) {
    alert("Fail");
}

});

始终适合我。