Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将html作为ajax响应返回_Javascript_Php_Jquery_Ajax_Codeigniter - Fatal编程技术网

Javascript 将html作为ajax响应返回

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

我有一个在codeigniter中通过AJAX提交表单的网页,提交效果很好,php脚本也很好,但是当php完成后,它返回一个HTML视图作为对AJAX的响应,因此它会重新填充一个div,而不是重新填充,尝试下载该文件。Chrome控制台显示

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能够推断出它。感谢您发布此消息!