如何让javascript打开php文件?
如何让javascript打开php文件?,php,javascript,ajax,Php,Javascript,Ajax,Photo.php文件将显示一条消息 但是当我添加?page=2来寻址时,它不会调用Photos函数来打开Photo.php文件 function Photos() { var opt = <?php echo $_GET['page'];?> alert(opt); if(window.XMLHttpRequest) { xmlhttp = new XML
Photo.php
文件将显示一条消息
但是当我添加?page=2
来寻址时,它不会调用Photos函数来打开Photo.php
文件
function Photos() {
var opt = <?php echo $_GET['page'];?>
alert(opt);
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("Results").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","Photo.php?page="+opt,true);
xmlhttp.send();
}
function showCat(option){
....
}
<?php
if(isset($_GET['page'])){
echo '<script type="text/javascript">'
,'myPhotos();'
, '</script>';
}
echo 'Results go here';
?>
xmlhttp.open(“GET”,“Photo.php?page”+opt,true)代码>
我想你缺少了一个=
xmlhttp.open("GET","Photo.php?page="+opt,true);
// Here --------------------------^
至少,它看起来是这样的。看起来您正在接受一个GET
参数,然后调用Photo.php
并传入一个查询字符串,其中page
是查询参数的名称
旁注:所有URL参数必须正确编码。因此,您也应该在那里使用encodeURIComponent
:
xmlhttp.open("GET","Photo.php?page="+encodeURIComponent(opt),true);
(从技术上讲,键和值都必须是URI编码的,但是“page”
的URI编码版本是“page”
,所以…)
顺便说一下,现在所有的现代浏览器都有相当有用的调试工具。例如,在Chrome中,您可以打开开发者工具并查看“网络”选项卡,以准确查看您向服务器发送的内容以及它向服务器发送的内容。对这类事情非常有用
xmlhttp.open(“GET”,“Photo.php?page”+opt,true)代码>
我想你缺少了一个=
xmlhttp.open("GET","Photo.php?page="+opt,true);
// Here --------------------------^
至少,它看起来是这样的。看起来您正在接受一个GET
参数,然后调用Photo.php
并传入一个查询字符串,其中page
是查询参数的名称
旁注:所有URL参数必须正确编码。因此,您也应该在那里使用encodeURIComponent
:
xmlhttp.open("GET","Photo.php?page="+encodeURIComponent(opt),true);
(从技术上讲,键和值都必须是URI编码的,但是“page”
的URI编码版本是“page”
,所以…)
顺便说一下,现在所有的现代浏览器都有相当有用的调试工具。例如,在Chrome中,您可以打开开发者工具并查看“网络”选项卡,以准确查看您向服务器发送的内容以及它向服务器发送的内容。对这类事情非常有用。正如阿卡姆所注意到的;您忘记在字符串变量周围加引号:
var opt = <?php echo $_GET['page'];?>
var opt=
应该是:
var opt = '<?php echo $_GET['page'];?>';
var opt='';
这应该是一个JavaScript错误,可能在Firebug的控制台中被注意到。Firebug是解决JavaScript或网络问题的非常方便的插件。在控制台中,您可以找到带有请求和响应头以及JavaScript错误的XMLHttpRequest,如果需要查看JavaScript对象的详细信息,您可以将console.log(myObject)添加到控制台中,单击该控制台可以显示更多详细信息
我不确定chrome是否有相同的功能,但是如果你没有Firefox或者更喜欢chrome,那么按F12键将打开开发者工具,就像在Opera和Internet explorer中一样,尽管我个人更喜欢Firefox和firebug插件。正如Akam所注意到的;您忘记在字符串变量周围加引号:
var opt = <?php echo $_GET['page'];?>
var opt=
应该是:
var opt = '<?php echo $_GET['page'];?>';
var opt='';
这应该是一个JavaScript错误,可能在Firebug的控制台中被注意到。Firebug是解决JavaScript或网络问题的非常方便的插件。在控制台中,您可以找到带有请求和响应头以及JavaScript错误的XMLHttpRequest,如果需要查看JavaScript对象的详细信息,您可以将console.log(myObject)添加到控制台中,单击该控制台可以显示更多详细信息
我不确定chrome是否具有相同的功能,但如果您没有Firefox或更喜欢chrome,则按F12键将打开开发工具,与Opera和Internet explorer中的开发工具相同,尽管我个人更喜欢带有firebug插件的Firefox。var opt='';不要直接将用户输入回显到页面。它使你容易受到攻击!如果您有PHP生成JavaScript/HTML并且“它不工作”。然后在浏览器中查看源代码。确定问题是客户端代码没有达到您预期的效果(在这种情况下,请不要向我们展示PHP代码),还是PHP没有生成您预期的客户端代码。请求是否失败或只是空白?这与TJ的答案有关。然后试着安装firebug,看看你在控制台中得到了什么。这可能是一个语法错误。您的帖子仍然显示var opt=而不是var opt=''var opt='';不要直接将用户输入回显到页面。它使你容易受到攻击!如果您有PHP生成JavaScript/HTML并且“它不工作”。然后在浏览器中查看源代码。确定问题是客户端代码没有达到您预期的效果(在这种情况下,请不要向我们展示PHP代码),还是PHP没有生成您预期的客户端代码。请求是否失败或只是空白?这与TJ的答案有关。然后试着安装firebug,看看你在控制台中得到了什么。这可能是一个语法错误。你的帖子仍然显示var opt=而不是var opt='''@我做的两件事仍然一样problem@SaeedPirdost:嗯,您确实需要=
,但显然还有其他问题。唯一的问题是调试它(请看几分钟前我在答案末尾添加的注释)。@SaeedPirdost:再次:“…显然还有其他问题…”和“唯一的问题是调试它…”我都做了同样的事情problem@SaeedPirdost:嗯,你确实需要=
,但显然还有其他问题。唯一的问题是调试它(请看几分钟前我在答案末尾添加的注释)。@SaeedPirdost:再次:“…显然还有其他问题…”和“唯一的问题是调试它…”