我对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(,它从 url 获取 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,另一篇似乎不太符合我的问题,但我仍然发现答案有点有用。从单独的文件返回 AJAX 响应文本和 Ajax 调用不从 php 文件返回数据
您正在从服务器返回纯 HTML。responseText 变量是一个字符串,其中包含对 GET 请求的纯文本响应。
GET 请求与您在访问给定 URL 时通常执行的任何其他浏览器请求一样。因此,您可以通过使用您选择的浏览器访问http://url/to/bridge.php?pro=<someValue>
来测试桥.php脚本为给定输入发送的内容。
你得到的数据量并不重要,使用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 ...
使用 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>
首先,只需回显 0 或 1 或任何来自 bridge.php 的该死的关键字"Hello world"。
代码
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert(xmlhttp.responseText);
}
说如果一切顺利。即,如果通往桥梁的路径.php那么它将进入此 if 条件。并将提醒响应。
如果这工作正常,那么你的代码也应该可以工作。
另请参阅@ccKep提到的答案。它易于使用。
此外,还可以使用Mozilla萤火虫等工具。这样你就可以理解发生了什么。希望这有帮助。
Ajax 运行在客户端而不是服务器上,因此您需要提供服务器的 URL。 这是行不通的:
xmlhttp.open("GET","../bridge.php?pro="+namex,true);
可能有效的是:
xmlhttp.open("GET","http://yourhost.com/bridge.php?pro="+namex,true);