ajax响应后加载脚本

时间:2017-10-18 10:01:45

标签: javascript php ajax laravel

我正在尝试进行ajax调用并在div类中显示一个html部分。为此,我使用以下方式。

$.ajax({
    type: "get",
    url: "{{url('searchByCheckbox')}}",
    dataType: 'html',
      success: function(html)
        {
           $(".infinite-scroll").html(html)
        }   
});

但问题是在html部分里面有一个脚本,当我第一次调用ajax时,我想加载它没有加载,但是对于第二个它加载了脚本。  假设html响应如下:

<script>
  alert()
</script>
// html

我如何让它发挥作用? 我把脚本放在html页面上面,作为回应。

(那些将问题标记为重复的人应该至少阅读我想要的内容和他们想要的内容)

1 个答案:

答案 0 :(得分:0)

我确定错误是由于脚本而发生的,因为您正在关闭html中的</script>标记。

最佳解决方案是将ajax来电中的数据作为json

返回

要做到这一点,你应该:

1-在您的dataType参数中添加ajax,如下所示:

$.ajax({
    type: "get",
    dataType: "json",

2-在处理php调用的ajax文件中,您必须将值重新设置为json,如下所示:

假设您目前正在执行以下操作:

echo $html

您应该将其更改为符合以下内容:

$retArr = array(
    "html"     => $html, //Your html code without the javascript function
    "jsFunc"   => $jsFunc //Your java script function parameters
) ;
echo json_encode($retArr) ;

然后您的ajax success必须如下所示:

success: function(data)
    { //You can access all the object parametes by calling the object name `data` followed by a dot `.` and then by the parameter key
       data.jsFunc // Your javascript function params
       $(".infinite-scroll").html(data.html) ;
    }