在jquery请求后刷新javascript

时间:2014-11-01 18:03:25

标签: javascript php jquery

我正在尝试使用jQuery刷新<div>来调用包含javascript的PHP脚本。

刷新后页面已加载,但未执行javascript。

我的问题是我不使用javascript函数而只是代码。

我知道我必须使用.on().live(),但不知道如何。

我试图打电话的页面:

require 'connexion.php';  

$statement = $connexion->prepare("SELECT * FROM table");
$statement->execute();


echo "<div id='refreshdiv'>";
//  generating content
if (isset($statement))
{
        while($data = $statement->fetch())                              
        {       
?>
<script language="javascript">
var str_in;
var str_out = ""; 
var num_in;
var num_out = "";
var e = "Enter Text!";
var num_out = <?php echo json_encode($data['message']); ?>;
str_out = "";
for(i = 0; i < num_out.length; i += 2) {
num_in = parseInt(num_out.substr(i,[2])) + 23;
num_in = unescape('%' + num_in.toString(16));
str_out += num_in;
}
message = unescape(str_out);
</script>
<?php

                if ($data['user'] == 'user1')
                {
                    echo "<p class='man'>".'Le '.$data['date'].'  '.$data['user'].' à dit:'.'<br>'."\n" ;
                    ?><script language="javascript">document.write(message);</script><?php
                    echo "</p>"."\n" ;
                }
                else
                {
                    echo "<p class='woman'>".'Le '.$data['date'].'  '.$data['user'].' à dit:'.'<br>'."\n" ;
                    ?><script language="javascript">document.write(message);</script><?php
                    echo "</p>"."\n" ;
                }

        }
}

        echo '</div>';
?>

主页:

<script>
function autoRefresh_div()
{
$("#refreshdiv").load("refreshpage.php");
}

setInterval('autoRefresh_div()', 5000); 
</script>

<div id='refreshdiv'><div>

1 个答案:

答案 0 :(得分:0)

从我看到的情况来看,绝对不需要在你用AJAX调用的页面上使用JS。所有这些东西都只能由PHP呈现,这就是你应该这样做的。

即使它不是,从AJAX响应中运行JS代码也是非常不安全和具有挑战性的。您必须将JS代码(可能在JSON变量中)分开,然后在其上运行eval()...再次,非常非常不安全,不推荐。

如果您仍想在AJAX调用后使用JS,请在主页面上定义该函数,并将其传递给您从AJAX调用获得的参数。像这样:

function autoRefresh_div() {
    $.get("refreshpage.php", function(res){
        var content = res.htmlContent; // say this is the content for the div
        var jsParam = res.jsParam;     // and this is the JS parameter(s)
        $("#refreshdiv").html(content);
        handleAjax(jsParam);
    });
}

function handleAjax(params) {
    /// do stuff here
}