Javascript 将html作为ajax响应返回
我有一个在codeigniter中通过AJAX提交表单的网页,提交效果很好,php脚本也很好,但是当php完成后,它返回一个HTML视图作为对AJAX的响应,因此它会重新填充一个div,而不是重新填充,尝试下载该文件。Chrome控制台显示Javascript 将html作为ajax响应返回,javascript,php,jquery,ajax,codeigniter,Javascript,Php,Jquery,Ajax,Codeigniter,我有一个在codeigniter中通过AJAX提交表单的网页,提交效果很好,php脚本也很好,但是当php完成后,它返回一个HTML视图作为对AJAX的响应,因此它会重新填充一个div,而不是重新填充,尝试下载该文件。Chrome控制台显示 Resource interpreted as Document but transferred with MIME type application/text/HTML 这让我感到困惑,因为我在另一个页面中使用了相同的代码,而且效果很好 这是我的Jque
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');
}
希望有人能给我指出正确的方向我已经被困在这个问题上两天了
谢谢大家。您需要设置AJAX
$.ajax({
type : 'POST',
url : baseurl + 'sales/add_payment',
dataType : 'html', // Will set the return type of the response as AJAX.
... Keep rest of the code same.
我也有同样的问题,我成功地解决了它,我把退出在控制器方法中返回给ajax调用的值之后。
在您的情况下,它将是:
echo $this->_loadpaymentcontent();
exit;
exit在这里的作用是将返回值限制为应该返回到ajax调用的值,并在html附加到返回值之前退出。从它产生的效果来看,这是显而易见的。这种奇怪的mime类型
application/text/HTML
来自哪里?HTML将是文本/HTML
在\loadpaymentcontent()
方法中的付款内容
视图之后放置第二个参数true
。不必显式设置数据类型
。给定适当的内容类型
,jQuery能够推断出它。感谢您发布此消息!