[英]PHP/CodeIgniter no POST response from jQuery Ajax call
我有一個jQuery Ajax Post請求,該請求進入Code Igniter函數,此后CodeIgniter發送一封包含該Post請求詳細信息的電子郵件。
$.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不會發送對該呼叫的響應。
收到Post請求並在電子郵件部分正常工作時運行,我收到包含Post請求中發送的詳細信息但onSuccess()的電子郵件。 永遠不會調用(並且不會通過Chromes網絡觀察器記錄任何響應,它只會顯示“待定”)
這一切都在我的本地機器上運行了
該請求是從主index.php完成的,但CodeIgniter僅安裝在/ admin目錄中
謝謝你的時間!
編輯:將ajax網址更改為帶有localhost的完整網址,因為這是在CI $ config中設置的方式
編輯:CI確實發送了響應,這需要2-3分鍾,這也是發送電子郵件所花費的時間,那時我無法訪問該站點的任何其他頁面。 我開始認為這可能與我的本地計算機/ Apache安裝有關。
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
}
}
}
嘗試以下代碼:
var url = '<?php echo base_url();?>index.php/my_class/email';
$.post(url, {
data: { name: inputName, phone: inputNumber},
},
function(data_returned){
alert(data_returned);
});
您應該empty
而不是!isset
,因為isset($_POST)
始終為TRUE
,我這樣認為:
public function email() {
if (empty($_POST)) {
//exit('No direct script access allowed');
} else {
//Send Email
}
}
問題出在我的sendmail設置和PHP掛起/重試,直到得到sendmail的響應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.