我正在尝试使用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>
答案 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
}