PHP& JS - 在页面

时间:2018-02-16 14:00:46

标签: javascript php jquery html ajax

我正在使用ajax调用将MVC局部视图与一些样式表和脚本文件附加到我的php页面。

但是,它不附加de <script>标记。我已经在网络上检查了我的HTTP请求,它确实带来了这些标签。

我的代码:

$.ajax({
    type: 'POST',
    url: 'http://localhost:63322/MyController/MyAction', //external url project
    data: JSON.stringify(parameters),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    async: true,
    crossDomain: true,
    processdata: true,
    headers: {
        "Access-Control-Allow-Origin" : "*",
        "Access-Control-Allow-Headers": "*"
    },
    success: function(result){  
        $(".pageContainer").html(result);           
    },
    error: function(er){ alert('Error'); }
});

关于ajax成功函数,我已经尝试过了:

  • 使用$(".pageContainer").empty().append(result)
  • 分隔脚本代码并添加到<head>,如下所示:
 var elems = $(result);
 var scripts = $.grep(elems, function(e){ 
      try{ 
           return e.tagName.toLowerCase() == "script";
      }catch(er){ return false; }
  });
 var remainElems = $.grep(elems, function(e){ 
      try{ 
           return e.tagName.toLowerCase() != "script";
      }catch(er){ return false; }
 });

 $.each(scripts, function(){ $('head')[0].appendChild(this); });
 $(".pageContainer").append(remainElems);
  • 在添加setTimeout(function(){ $(".pageContainer").html(result); }, 1000);

  • 之前给予一些时间
  • <script>代码更改为<link type="text/javascript" src="http://someurl.com" rel="tag"/>并附加但代码未执行

但没有任何作用。

有什么问题?我缺少什么?

我的PHP页面使用jquery-1.8.3和jquery-ui-1.9.2.custom。这是问题吗?

注意:

我的问题与以下内容有很大不同:Executing inside retrieved by AJAX

如果您同时阅读,您会发现它们非常不同。我已经知道了什么,并注意到了。

2 个答案:

答案 0 :(得分:0)

解决。我不知道为什么,但似乎jquery-1.8.3不会动态地将<script>标签插入到html代码中。

我改变了

<script type="text/javascript" src="js/jquery-1.8.3.js"></script>

<script type="text/javascript" src="js/jquery-1.10.2.js"></script>

现在可行。

答案 1 :(得分:-1)

我发现了问题:旧版本的jQuery在它应该追加的html中偶然发现</script>。但是,如果你屏蔽了斜杠,那么它可以工作:

<\/script>

样本:

&#13;
&#13;
var result = '<p>Hello</p><script>function test() { return "hello!";} <\/script>';

$(".pageContainer").html(result);
console.log(test());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div class="pageContainer"></div>
&#13;
&#13;
&#13;