什么是阿贾克斯回到我身边? (ajax调用php文件)

时间:2012-05-09 05:28:13

标签: php ajax

我几乎是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 fileAjax call not returning data from php file

4 个答案:

答案 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);