我们当前正在浏览mypage.html,其标题中包含指向以下js文件的链接:
<script language="JavaScript" type="text/javascript" src="jsfile.js"></script>
在jsfile.js
中,当用户将某些内容输入keyup()
时,会执行一项功能#searchbar
,其值将存储在search = $(#searchbar).val();
然后我将此值传递给search.php
,如下所示:
$.post( "search.php", { searchval: search }, function(sentdata){
console.log(sentdata);
});
其中search.php
的内容为:
<?php
if(isset($_POST[searchval])){
$search = $_POST[searchval];
echo "input value is $search";
echo "<script type='text/javascript'> alert('its working') </script> ";
}
?>
但是,不是弹出警报(或者通常在JS中执行的任何其他操作),第二个回显只是打印&#34;提醒(&#39;其工作&#39;)&#34;进入控制台。 如何修改search.php以允许它将实际的js注入myfile.html?请注意,我还尝试在标记中包装js代码。
相关问题:为什么当我省略console.log(sentdata)
时,search.php
不再在控制台中回显任何内容?
答案 0 :(得分:1)
如何修改search.php以允许它在myfile.html中注入实际的js?
首先,您需要修改您的javascript文件:
$.post( "search.php", { searchval: search }, function(sentdata){
eval(sentdata);
});
不需要javascript标签,只需回显有效的Javascript代码:
if(isset($_POST[searchval])){
echo "alert('its working');";
}
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/eval
答案 1 :(得分:0)
你可以这样做
$.post( "search.php", { searchval: search }, function(data){
alert(data); // this will alert the data which will print on search.php
});
并在php文件中回显您要打印的数据,如
if(isset($_POST[searchval])){
echo 'its working. i got'.$_POST[searchval];
}