2017-10-18 89 views
0

我试图做一个ajax调用,并显示一个div类内的html部分。为此,我采用了以下方式。ajax响应后脚本不加载

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

但问题是存在的是我想,当我第一次做AJAX调用它没有加载到加载HTML部分中的脚本,但对于第二个它的加载脚本。 假设这样的HTML响应:

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

我如何使它发挥作用? 我把脚本放在html页面的上方,这是我得到的回应。

(那些谁是标记了一个问题,重复至少应该我想要什么看,他们想要的东西)

+0

你试过'$(“。infinite-scroll”).text(html)'? – ricky

+1

@ricky,这将显示为纯文本的HTML。 – Mouser

+0

你是否收到你的HTML请求?据我了解,你得到的回应,但脚本里面你反应HTML不起作用,对吗? – Krusader

回答

0

我敢肯定的是,错误是因为剧本的发生,因为你关内的</script>标签HTML。

最好的解决办法是从你的ajax调用返回的数据作为json

为了做到这一点,你应该:

1-添加dataTypeajax参数为如下:

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

2-在处理ajax调用的php文件中,必须按照以下方式将值恢复为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) ; 
    }