Ajax $ .post(“../ application / controller / theScript.php”附加到站点根目录而不是相对

时间:2016-06-18 16:32:28

标签: php jquery ajax

我有一组电子邮件功能,类似下面的内容,用于弹出一个可以发送电子邮件的窗口。

.add向userController发送post请求并返回作为电子邮件窗口的VIEW。

.init被调用并设置电子邮件窗口的处理程序。

在电子邮件窗口中按下发送按钮以发送电子邮件时,将调用

.send。

var Email={
con:"../application/controllers/",
dialog:null,

init:function(){..
//add event handlers for email dialog

send:function(){
    var emailType=$("#emailType").prop("value");

    var email=$("#email").prop("value");
    if(!email){this.error("Please provide a valid email address");return false}

    var emailTitle=$("#emailTitle").prop("value");
    if(!emailTitle){this.error("Please provide a valid email title");return false}

    var emailBody=$("#emailBody").prop("value");
    if(!emailBody){this.error("Please provide a valid email body");return false}

    if(emailType && email && emailTitle && emailBody){
        $.post(Email.con+"userController.php",{
            sendMail:"true",
            emailType:emailType,
            email:email,
            emailTitle:emailTitle,
            emailBody:emailBody,
        });

        return true;
    }

    return false;
},

add:function(id){
        $("#"+id).on("click",function(e){
        $.post(Email.con+"userController.php",{
            showMail:"true",
            emailType:this.dataset.emailType,
        },
        function(data,status){
            if(status==='success'){
                $("body").append(data);
                Email.init();
            }
        });
    });

    return this;
},

}

问题在于send函数,因为$ .post ajax调用中的路径不正确。当调用add时,它会找到文件夹系统中的userController,如

  • 应用
    • 控制器 -userController.php
  • 公共

因此路径“../application/controllers/userController.php”退出一个公共区域并沿着路径返回控制器。

在发送中,路径始终附加到站点根目录或公用文件夹,并返回类似http://theSite/application/controllers/userController.php

的内容

为什么send ajax调用在一次情况下不使用从站点根目录到控制器的相对路径?

必须有50个其他ajax调用才能在网站上正常运行。

2 个答案:

答案 0 :(得分:1)

ajax.post请求转到Url,而不是文件路径。 它取决于Apache上的活动重写,以及适当的php路由器,哪个文件与哪个Url相关联 我不知道你正在使用什么框架,但它不太可能使用像http://theSite/application/controllers/userController.php这样的请求 最有可能的应该是http://theSite/user,或者http://theSite/user.php,或者在您的代码中 $。员额(邮箱+ “/用户”,{
...
}

答案 1 :(得分:0)

我的假设是“电子邮件窗口”是从不同的URL加载的,因此在触发发送时,浏览器会不同地解释路径。尝试将con设置为"/application/controllers/",看看是否能解决问题。如果没有,我会检查浏览器中弹出的窗口的URL,因为它可能是从稍微不同的URL加载的,因此,相对路径适用于add而不是send的原因。