我几乎是ajax的新手。这是一个ajax调用,我用它来使用名为“bridge.php”的php文件从sql数据库中检索信息。我似乎无法理解我从中得到什么,如果有的话。它是一个阵列吗?一个东西?我没有得到任何回报,因为我在使用帖子时使用了get?我试图获取的信息量不适合获取,但我通过电话发送的金额足够小。
<script type="text/javascript">
function refreshPro(namex){
alert(namex);
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)
{
document.getElementById("port_work").innerHTML=xmlhttp.responseText; //what is xmlhttp.responseText?
}
}
xmlhttp.open("GET","../bridge.php?pro="+namex,true);
xmlhttp.send();
}
</script>
现在为php(bridge.php)从网址获取get var并查询数据库,我知道这部分本身可以正常工作......
<?php
$pro = $_GET["pro"];
$sql = "SELECT * FROM portfolio WHERE title LIKE \"%$pro%\"";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
?>
<div id="portfolio_item">
<h2><?php echo $row['title']; ?></h2>
<img src="<?php echo $row['image_paths']; ?>" alt="<?php echo $row['title']; ?>" />
<p id="portfolio_desc"><?php echo $row['description']; ?></p>
</div>
<?php
}
?>
是的,我做完了我的作业。我已经研究了这两个其他的帖子,但是我开始谈论JSON,我对此一无所知,而另一个似乎与我的问题不太匹配,但我仍然觉得答案有点有用。 Returning AJAX responseText from a seperate file和Ajax call not returning data from php file
答案 0 :(得分:2)
您将从服务器返回纯HTML。 responseText变量是一个字符串,包含对GET请求的明文响应。
GET请求与您在访问给定URL时通常执行的任何其他浏览器请求一样。因此,您可以使用您选择的浏览器访问http://url/to/bridge.php?pro=<someValue>
来测试bridge.php脚本为给定输入发送的内容。
back 的数据量无关紧要,使用POST或GET的WRT问题是在中放置了多少数据(GET)请求只能获取255个字符的数据,POST在技术上是无限制的。)
如果没有直接访问bridge.php脚本,则表明此脚本可能失败,导致500内部服务器错误代码。这不会被您的javascript代码捕获,因为您在对响应做任何事情之前明确检查代码是否为200(成功)。
我想补充一下:
... snip ...
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("port_work").innerHTML=xmlhttp.responseText;
}
else
{
alert('There was a ' + xmlhttp.status + ' error :(');
}
}
... snip ...
答案 1 :(得分:0)
使用jQuery使其变得相当简单:
<script type="text/javascript" src="path/to/jquery.js">
<script type="text/javascript">
function refreshPro(namex)
{
$.ajax({
type: "GET",
url: "../bridge.php",
data: {
pro: namex
}
}).done(function( msg )
{
$("#port_work").html(msg);
});
}
</script>
答案 2 :(得分:0)
首先,只需从bridge.php回显0或1或任何该死的关键字'Hello world'。
代码
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert(xmlhttp.responseText);
}
说如果一切顺利的话。 I.E如果到bridge.php的路径那么它将进入这个if条件。并会提醒你。
如果这完全有效,那么你的代码也会起作用。
也可以看到@ccKep提到的答案。它易于使用。
另外使用像Mozilla firebug这样的工具。这样你就可以理解发生了什么。希望这会有所帮助。
答案 3 :(得分:-1)
Ajax在不在服务器上的客户端上运行,因此您需要提供服务器的URL。这不起作用:
xmlhttp.open("GET","../bridge.php?pro="+namex,true);
可能有用的是:
xmlhttp.open("GET","http://yourhost.com/bridge.php?pro="+namex,true);