PHP / HTML / JavaScript: & lt; script>使用echo异步调用时不工作
PHP/HTML/JavaScript: <script> not working when called asynchronously using echo
我的网页上的div的innerHTML属性是异步更新的(XMLHttpRequest)从服务器获取PHP:但它似乎不调用javascript。
<div id="mydiv"><script>alert('hello');</script></div>
这绝对没问题(更新同一div的内部HTML):
echo "<p>Hello</p>";
但是这行不通:
echo "<script>alert('hello');</script>";
我不知道为什么!我已经在多个文档中尝试了这一点,我在网上搜索似乎表明它应该工作。
只有在内容是异步的情况下才会出现这个问题。
<html>
<body>
<?php
echo "<script>alert('hello');</script>";
?>
</body>
</html>
我可以很容易地设计围绕这一点,但它是不可能执行javascript代码以这种方式?据我所知,该页建议变通,但没有明确说这是不可能的:通过echo在PHP中执行javascript,通过ajax。
谢谢!
您正在做的是将script
标记回显到html的正文中,但没有要求它们运行javascript。不管怎样,这都是错误的做法。
你应该从ajax请求的成功函数中执行你想要的任何javascript。
通常我会将JSON
对象从我的PHP
传递回success
处理程序,它将JSON.parse
它,然后用返回的数据做你想做的事情,但是你也可以使用Javascripts
eval()
,尽管,由于安全原因,这在大多数情况下是不鼓励的。
不使用eval()
;
$.ajax({
url: "path/to/php.php",
type:'POST',
data: {
data: 'someString'
},
success: function(json){
var obj = JSON.parse(json);
if(obj) {
// run some javascript
}
},
});
PHP文件(path/to/PHP . PHP);
<?php
// create return object to pass back to client javascript
$return = new stdClass();
// if you have incoming data from the ajax request to the server
$dataFromAjaxRequest = $_POST['data'];
// do somehting with this data;
if($dataFromAjaxRequest == "someString") {
$return->success = true;
} else {
$return->success = false;
}
// clean the buffer
ob_clean();
// encode your return obj to JSON and echo it and die
die(json_encode($return));
?>
使用eval
执行纯php生成的Javascript;Javascript;
$.ajax({
url: "path/to/php.php",
type:'POST',
data: {
data: 'someString'
},
success: function(javascript){
eval(javascript);
},
});
PHP文件(path/to/PHP . PHP);
<?php
// if you have incoming data from the ajax request to the server
$dataFromAjaxRequest = $_POST['data'];
// do somehting with this data;
if($dataFromAjaxRequest == "someString") {
$return = "alert('success!');";
} else {
$return = "alert('failure!');";
}
// clean the buffer
ob_clean();
// encode your return obj to JSON and echo it and die
die($return);
?>
希望这能奏效
<html>
<body>
<script>eval(<?php echo 'alert('hello')';?>);
</script>
</body>
</html>
为了更好的跨浏览器兼容性和减少冗长,我建议使用jQuery。
$.get('http://example.com', function(responseText) {
alert(responseText);
});
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 如何显示由ajax调用运行的PHP文件的echo
- 在 HTML 代码中调用 PHP 函数,在 PHP echo 语句中
- 如何在php echo中添加代码,使其在调用时成为弹出窗口
- PHP:在echo下调用javascript
- 调用Javascript函数在PHP Echo
- PHP -在外部调用echo脚本
- 如何在PHP echo中调用javascript函数/编写脚本
- 从php调用和执行javascript函数echo call (print)
- 如何调用php echo json变量值在html代码
- 在使用php echo的响应成功调用AJAX后附加数据并添加类
- 使用特定变量从PHP echo调用JS函数时出现问题
- PHP echo JavaScript 函数在 Ajax 调用后不起作用
- PHP / HTML / JavaScript: & lt; script>使用echo异步调用时不工作