0

我有一个 jQuery Ajax Post 请求,该请求进入 Code Igniter 函数,之后 CodeIgniter 发送一封电子邮件,其中包含 post 请求中的详细信息。

JavaScript 代码:

$.ajax({
    type: 'POST',
    url: 'http://localhost/admin/index.php/callback',
    data: { 'name': inputName, 'phone': inputNumber},
    success: function() {
        onSuccess();
},
async:true
});

PHP/CodeIgniter 函数

public function email() {
    if (!isset($_POST)) {
         //exit('No direct script access allowed');
    } else {
    //Send Email
    }
}

问题见编辑

CodeIgniter 不会对调用发送响应。

Post 请求已收到并在电子邮件部分正常运行时运行,我收到了包含 post 请求中发送的详细信息的电子邮件,但 onSuccess(); 从未被调用(并且没有通过 Chromes 网络观察程序记录任何响应,它只是显示“待处理”)

这都是从我的本地机器上运行的

此请求是从主 index.php 完成的,但 CodeIgniter 仅安装在 /admin 目录中

谢谢你的时间!

编辑:将 ajax url 更改为带有 localhost 的完整 url,因为它是在 CI $config 中设置的

编辑:CI 确实会发送回复,这需要 2-3 分钟,这也是发送电子邮件所需的时间,那时我无法访问该网站的任何其他页面。我开始认为这可能是我的本地机器/Apache 设置的问题。

4

4 回答 4

1
var base_url = '<?php echo base_url();?>';
$.ajax({
    type: "POST",
    url: base_url+"index.php/my_class/email",
    data: { name: inputName, phone: inputNumber},
    success: function() {
        // success actions....
    }
});

控制器

class My_class extends CI_Controller{
    public function email() {
        $name = $this->input->post('name');
        if (!$name) {
        //exit('No direct script access allowed');
        } else {
        //Send Email
        }
    }

}
于 2013-01-16T16:29:56.703 回答
0

试试下面的代码:

var url = '<?php echo base_url();?>index.php/my_class/email';

$.post(url, {
    data: { name: inputName, phone: inputNumber},
},
function(data_returned){
    alert(data_returned);
});
于 2013-01-16T16:48:29.490 回答
0

你应该你empty而不是!isset,因为isset($_POST)总是TRUE,我认为是这样的:

public function email() {
    if (empty($_POST)) {
         //exit('No direct script access allowed');
    } else {
    //Send Email
    }
}
于 2013-01-16T17:03:06.370 回答
0

问题在于我的 sendmail 设置和 PHP 挂起/重试,直到它得到 sendmail 的响应。

于 2013-03-04T12:52:13.240 回答