PHP-echoongjavascript函数
我看过其他关于回显JS代码的帖子,但它不适用于我的JS代码。我不知道这是否是因为我也在响应AJAX调用,但我不明白PHP为什么会对此大惊小怪 在将这些JS调用转换为等价的PHP调用时,我做错了什么 JavaScript代码:PHP-echoongjavascript函数,javascript,php,Javascript,Php,我看过其他关于回显JS代码的帖子,但它不适用于我的JS代码。我不知道这是否是因为我也在响应AJAX调用,但我不明白PHP为什么会对此大惊小怪 在将这些JS调用转换为等价的PHP调用时,我做错了什么 JavaScript代码: <script language="Javascript"> var countdown; var i=0; countdown = setInterval(function(){ var xmlhttp;
<script language="Javascript">
var countdown;
var i=0;
countdown = setInterval(function(){
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var JSONobj=JSON.parse(xmlhttp.responseText);
document.getElementById("homelink").innerHTML=i;
i++;
}
}
xmlhttp.open("GET","updateindex.php",true);
xmlhttp.send();
},3000);
</script>
<?php
echo "<script language='Javascript'>";
echo "var countdown;";
echo "var i=0;";
echo "countdown = setInterval(function(){";
echo "var xmlhttp;";
echo "if (window.XMLHttpRequest){";
echo "// code for IE7+, Firefox, Chrome, Opera, Safari";
echo "xmlhttp=new XMLHttpRequest();";
echo "}else{";
echo "// code for IE6, IE5";
echo "xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');";
echo "}";
echo "xmlhttp.onreadystatechange=function(){";
echo "var JSONobj=JSON.parse(xmlhttp.responseText);";
echo "document.getElementById('homelink').innerHTML=i;";
echo "i++;";
echo "}";
echo "}";
echo "xmlhttp.open('GET','updateindex.php',true);";
echo "xmlhttp.send();";
echo "},3000);";
echo "</script>";
?>
function someFunction(methode,url){
var countdown;
var i=0;
countdown = setInterval(function(){
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var JSONobj=JSON.parse(xmlhttp.responseText);
document.getElementById("homelink").innerHTML=i;
i++;
}
}
xmlhttp.open(methode,url,true);
xmlhttp.send();
},3000);
}
<?PHP echo '<script language="text/javascript"> someFunction("GET","updateindex.php"); </script>' ?>
var倒计时;
var i=0;
倒计时=设置间隔(函数(){
var-xmlhttp;
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}否则{
//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var JSONobj=JSON.parse(xmlhttp.responseText);
document.getElementById(“homelink”).innerHTML=i;
i++;
}
}
open(“GET”,“updateindex.php”,true);
xmlhttp.send();
},3000);
PHP echo用于上面的JavaScript代码(我需要的,但不起作用):
<script language="Javascript">
var countdown;
var i=0;
countdown = setInterval(function(){
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var JSONobj=JSON.parse(xmlhttp.responseText);
document.getElementById("homelink").innerHTML=i;
i++;
}
}
xmlhttp.open("GET","updateindex.php",true);
xmlhttp.send();
},3000);
</script>
<?php
echo "<script language='Javascript'>";
echo "var countdown;";
echo "var i=0;";
echo "countdown = setInterval(function(){";
echo "var xmlhttp;";
echo "if (window.XMLHttpRequest){";
echo "// code for IE7+, Firefox, Chrome, Opera, Safari";
echo "xmlhttp=new XMLHttpRequest();";
echo "}else{";
echo "// code for IE6, IE5";
echo "xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');";
echo "}";
echo "xmlhttp.onreadystatechange=function(){";
echo "var JSONobj=JSON.parse(xmlhttp.responseText);";
echo "document.getElementById('homelink').innerHTML=i;";
echo "i++;";
echo "}";
echo "}";
echo "xmlhttp.open('GET','updateindex.php',true);";
echo "xmlhttp.send();";
echo "},3000);";
echo "</script>";
?>
function someFunction(methode,url){
var countdown;
var i=0;
countdown = setInterval(function(){
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var JSONobj=JSON.parse(xmlhttp.responseText);
document.getElementById("homelink").innerHTML=i;
i++;
}
}
xmlhttp.open(methode,url,true);
xmlhttp.send();
},3000);
}
<?PHP echo '<script language="text/javascript"> someFunction("GET","updateindex.php"); </script>' ?>
首先,尝试以这种方式回显:
<?php
echo '<script language="text/javascript">
var countdown;
var i=0;
countdown = setInterval(function(){
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var JSONobj=JSON.parse(xmlhttp.responseText);
document.getElementById("homelink").innerHTML=i;
i++;
}
}
xmlhttp.open("GET","updateindex.php",true);
xmlhttp.send();
},3000);
</script>';
?>
检查你的页面来源,如果它真的没有回音
我只想补充一点,这是一种非常糟糕的做法,但我们只是想弄清楚为什么它不起作用,而不是如何以最佳方式来做…首先,尝试以这种方式回应它:
<?php
echo '<script language="text/javascript">
var countdown;
var i=0;
countdown = setInterval(function(){
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var JSONobj=JSON.parse(xmlhttp.responseText);
document.getElementById("homelink").innerHTML=i;
i++;
}
}
xmlhttp.open("GET","updateindex.php",true);
xmlhttp.send();
},3000);
</script>';
?>
检查你的页面来源,如果它真的没有回音
我只想补充一点,这是一种非常糟糕的做法,但我们只是想弄清楚它为什么不起作用,而不是如何以最佳方式进行…尝试关闭并重新打开PHP标记:
?>
<script language="Javascript">
var countdown;
var i=0;
countdown = setInterval(function(){
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var JSONobj=JSON.parse(xmlhttp.responseText);
document.getElementById("homelink").innerHTML=i;
i++;
}
}
xmlhttp.open("GET","updateindex.php",true);
xmlhttp.send();
},3000);
</script>
<?php
?>
var倒计时;
var i=0;
倒计时=设置间隔(函数(){
var-xmlhttp;
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}否则{
//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var JSONobj=JSON.parse(xmlhttp.responseText);
document.getElementById(“homelink”).innerHTML=i;
i++;
}
}
open(“GET”,“updateindex.php”,true);
xmlhttp.send();
},3000);
尝试关闭并重新打开PHP标记:
?>
<script language="Javascript">
var countdown;
var i=0;
countdown = setInterval(function(){
var xmlhttp;
if (window.XMLHttpRequest){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var JSONobj=JSON.parse(xmlhttp.responseText);
document.getElementById("homelink").innerHTML=i;
i++;
}
}
xmlhttp.open("GET","updateindex.php",true);
xmlhttp.send();
},3000);
</script>
<?php
?>
var倒计时;
var i=0;
倒计时=设置间隔(函数(){
var-xmlhttp;
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}否则{
//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var JSONobj=JSON.parse(xmlhttp.responseText);
document.getElementById(“homelink”).innerHTML=i;
i++;
}
}
open(“GET”,“updateindex.php”,true);
xmlhttp.send();
},3000);
您没有回显换行符(\n
)字符,因此整个输出是一行文本
为了实现这一点,您需要在JS语法中完美地使用分号、花括号等。此外,在这一行输出中使用单行注释(/
)。一旦解析器命中了第一个,该行的其余部分(即代码的其余部分)就是一条注释。最好使用多行注释符号(/*comment*/
)
您需要将换行符添加到每个回显行的末尾,或者使用一个或类似的长格式字符串
尽管如此,像这样重复JS是非常糟糕的做法。你应该停止那样做。关闭PHP并在需要时重新打开它是一个好的开始。将大部分JS移到外部JS文件会更好。如果您需要PHP将数据输出到JS,有许多其他方法可以实现
从注释中添加:您还有一个额外的echo“}”代码>行就在echo”xmlhttp.open
行之前。这种情况在尝试从一个lang回显另一个lang时很常见,所以这是我建议您停止的原因之一
另外,在您检查onreadystatechange
时,在您尝试解析响应之前,您没有检查请求是否已完成且是否成功
可能还有其他错误,但这就是我目前的情况。您没有回显换行符(\n
)字符,因此整个输出是一行文本
为了实现这一点,您需要在JS语法中完美地使用分号、大括号等。此外,您在这一行输出中使用单行注释(/
)。一旦解析器命中第一行注释,则该行的其余部分(即您代码的其余部分)将被删除是注释。最好使用多行注释符号(/*comment*/
)
您需要将换行符添加到每个回显行的末尾,或者使用一个或类似的长格式字符串
总而言之,像这样回显JS是非常糟糕的做法。你应该停止这样做。关闭PHP并在需要时重新打开它是一个好的开始。将大部分JS移到外部JS文件会更好。如果你需要PHP将数据输出到JS,有许多其他方法可以实现
从注释中添加:您的echo“}”
行就在echo”xmlhttp前面。打开行。这类事情在尝试从一个语言到另一个语言时很常见,所以这是我说你应该停止的原因之一
另外,在您检查onreadystatechange
时,在您尝试解析响应之前,您没有检查请求是否已完成且是否成功
可能还有其他的问题,但这就是我目前所做的