PHP / CodeIgniter没有来自jQuery Ajax调用的POST响应

时间:2013-01-16 16:24:47

标签: php jquery ajax codeigniter

我有一个jQuery Ajax Post请求进入Code Igniter功能, 之后,CodeIgniter会在邮件请求中发送包含详细信息的电子邮件。

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不会向呼叫发送响应。

收到邮件请求并运行,因为电子邮件部分工作正常,我收到邮件,其中包含邮件请求中发送的详细信息,但是onSuccess();永远不会被调用(并且没有通过Chromes网络观察者记录响应,它只是说'待定')

这都是我当地的机器上运行的

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

谢谢你的时间!

编辑:使用localhost将ajax网址更改为完整网址,因为它是如何在CI $ config中设置的

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

4 个答案:

答案 0 :(得分: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
        }
    }

}

答案 1 :(得分: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);
});

答案 2 :(得分:0)

您应该empty代替!isset,因为isset($_POST)始终是TRUE,我想是这样的:

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

答案 3 :(得分:0)

问题在于我的sendmail设置和PHP挂起/重试,直到收到sendmail的回复。