Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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 AJAX从post响应将HTML代码加载到div_Javascript_Php_Html_Ajax_Request - Fatal编程技术网

Javascript AJAX从post响应将HTML代码加载到div

Javascript AJAX从post响应将HTML代码加载到div,javascript,php,html,ajax,request,Javascript,Php,Html,Ajax,Request,在使用AJAX发布请求之后,我想将简单的html代码加载到父div中 HTML: <div id="html-container"></div> 还尝试了$('html容器').text(数据),$('html容器').load(数据) PHP: if (array_key_exists('stype', $_POST)) { $dataStr = funcs_to_generate_html_code(); echo "$data

在使用AJAX发布请求之后,我想将简单的html代码加载到父div中

HTML:

<div id="html-container"></div>  
还尝试了$('html容器').text(数据),$('html容器').load(数据)

PHP:

if (array_key_exists('stype', $_POST)) {

        $dataStr = funcs_to_generate_html_code();
        echo "$dataStr";

  } else {

        $dataStr = func_to_generate_html_code();
        echo "$dataStr";

    }
问题是:

parsererror SyntaxError: Unexpected token < in JSON at position 0
parsererror语法错误:JSON中位置0处的意外标记<
但是在开发工具(网络->XHR->响应)中没有错误,只需要我需要的html代码

在PHP中:echo json_encode($dataStr);返回损坏的html代码,没有json_encode只使用echo我仍然会得到错误(如上所述)

如何使用AJAX从post请求的响应中获取HTML代码并将其设置为div

UPD


设置dataType:“text”和dataType:“html”将删除上面的错误,如果我设置$(“#html container”),我可以在浏览器检查器中看到所有html代码,但在我的div中看不到它。text(data)所有html将以简单文本的形式加载到div。

尝试根据文档更改返回值
数据类型

数据类型(默认值:智能猜测(xml、json、脚本或html)) 类型:字符串您希望从数据库返回的数据类型 服务器。如果未指定,jQuery将根据 响应的MIME类型(在1.4中,XML MIME类型将生成XML) JSON将生成一个JavaScript对象,在1.4中,脚本将执行 脚本,其他任何内容都将作为字符串返回)

因此Jquery代码如下所示:

$("#html-container").empty();

    $.ajax({

        type: "POST",
        url: "src/items.php",
        dataType: "html",
        data: {stype:st},
        success : function(data) { 
            $('#html-container').html(data);
        },
        error : function(jqXHR, textStatus, errorThrown) {
        console.log(textStatus, errorThrown);
    }
});
甚至可以从
ajax
接收任何数据的方法:

$("#html-container").empty();

        $.ajax({

            type: "POST",
            url: "src/items.php",
            data: {stype:st},
            success : function(data) { 
                $('#html-container').html(data);
            },
            error : function(jqXHR, textStatus, errorThrown) {
            console.log(textStatus, errorThrown);
        }
    });

更改后端代码,如下所示

if (array_key_exists('stype', $_POST)) {
    $dataStr = funcs_to_generate_html_code();
    echo json_encode(array( 'html' => $dataStr ));
} else {
    $dataStr = func_to_generate_html_code();
    echo json_encode(array( 'html' => $dataStr ));
}
Javascript代码,用于将html附加到dom

$("#html-container").empty();
$.ajax({
    type: "POST",
    url: "src/items.php",
    dataType: "json",
    data: { stype: st },
    success: function (data) {
        $('#html-container').html(data.html);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        console.log(textStatus, errorThrown);
    }
});
我建议只从后端发送“数据”,然后使用javascript创建新的HTML元素并用这些新元素修改dom


您是否尝试将数据类型更改为“文本”,只是为了查看得到了什么?
$("#html-container").empty();
$.ajax({
    type: "POST",
    url: "src/items.php",
    dataType: "json",
    data: { stype: st },
    success: function (data) {
        $('#html-container').html(data.html);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        console.log(textStatus, errorThrown);
    }
});