我有一个jQuery Ajax Post请求进入Code Igniter功能, 之后,CodeIgniter会在邮件请求中发送包含详细信息的电子邮件。
$.ajax({
type: 'POST',
url: 'http://localhost/admin/index.php/callback',
data: { 'name': inputName, 'phone': inputNumber},
success: function() {
onSuccess();
},
async:true
});
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设置的问题。
答案 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的回复。