我有一個通過AJAX在codeigniter中提交表單的網頁,提交工作很好,php腳本也可以工作,但是當php完成時,它會返回一個HTML視圖作爲對Ajax的響應,因此它重新填充div,而不是重新填充它嘗試下載文件。 Chrome控制檯顯示返回html作爲ajax響應
Resource interpreted as Document but transferred with MIME type application/text/HTML
讓我感到困惑,因爲我在另一個頁面中使用相同的代碼,它工作正常。
這是我的jQuery腳本
$("#addpaymentform").submit(function (event) {
var formdata = $(this).serialize();
$.ajax({
type: "POST",
data: formdata,
url: baseurl + 'sales/add_payment',
success: function (data, status, xhr) {
var ct = xhr.getResponseHeader("content-type") || "";
if (ct.indexOf('html') > -1) {
$('#paymets').html();
$('#payments').html(data);
$('#addpaymentform').each(function() { this.reset() });
}
if (ct.indexOf('json') > -1) {
$("#Mynavbar").notify(
data,
{position: "bottom center"}
);
$('#addpaymentform').each(function() { this.reset() });
}
}
});
event.preventDefault(); // this will prevent from submitting the form.
});
,這是我的控制器
function add_payment()
{
$this->form_validation->set_rules('fpay', 'Type of payment', 'trim|required|alpha');
$this->form_validation->set_rules('payment', 'Payment', 'trim|numeric');
$this->form_validation->set_error_delimiters('', '');
if ($this->form_validation->run() == FALSE) { // validation hasn't been passed
header('Content-type: application/json');
echo json_encode(validation_errors());
} else {
$fpay = filter_var($this->input->post('fpay'), FILTER_SANITIZE_STRING);
$payment = filter_var($this->input->post('payment'), FILTER_SANITIZE_STRING);
if(isset($_SESSION['payments'][$fpay]))
{
$temp = $_SESSION['payments'][$fpay] + $payment;
$_SESSION['payments'][$fpay] = $temp;
header('Content-type: application/html');
echo $this->_loadpaymentcontent();
}
}
}
function _loadpaymentcontent() {
$this->load->view('payment_content');
}
希望有人能指出我我一直停留在這2天的正確方向。
謝謝大家。
這個陌生的mime類型'application/text/HTML'來自哪裏? HTML將是'text/html' – Andreas
在'_loadpaymentcontent()'方法的'payment_content'視圖之後放置第二個參數'true'。 – Tpojka