【问题标题】:Can't Get A Simple Ajax Response无法获得简单的 Ajax 响应
【发布时间】:2010-03-05 00:34:16
【问题描述】:

我之前使用 javascript 和 PHP 实现了更复杂的 AJAX,但由于某种原因,这无法正常工作。这几乎是直接从 W3 示例中复制而来的。

var xmlhttp;
function changeLoc(str)
 {
 xmlhttp=GetXmlHttpObject();
 if (xmlhttp==null)
   {
   alert ("Browser does not support HTTP Request");
   return;
   }
 var url="action.php";
 url=url+"?q="+str;
 url=url+"&sid="+Math.random();
 xmlhttp.onreadystatechange=stateChanged;
 xmlhttp.open("GET",url,true);
 xmlhttp.send(null);
 }

 function stateChanged()
 {
 if (xmlhttp.readyState==4)
 {
  alert(xmlhttp.responseText);
 }
 }

 function GetXmlHttpObject()
 {
 if (window.XMLHttpRequest)
   {
   // code for IE7+, Firefox, Chrome, Opera, Safari
   return new XMLHttpRequest();
   }
 if (window.ActiveXObject)
   {
   // code for IE6, IE5
   return new ActiveXObject("Microsoft.XMLHTTP");
   }
 return null;
 }

还有简单的action.php

<?php
 echo 'here'; 
?>

从 html 页面上的链接调用函数 changeLoc。它进入 readyState = 4 条件,但警报为空白。我知道这很简单,但我找不到。

谢谢。

【问题讨论】:

  • 您是否尝试过通过浏览器直接调用请求的目标?确保调用的目标返回预期的结果。换句话说,在想知道它为什么坏之前确保电视已插上电源......
  • 是的,正在导航到 action.php echo 的“这里”

标签: php ajax text response


【解决方案1】:

使用萤火虫查看是否有任何问题(例如有任何 404 等)。此外,最好为 AJAX 选择像 jQuery 这样的 javascript 框架。

【讨论】:

  • 是的,我真的很喜欢 jQuery,但我不明白它会如何影响这个基本问题。
  • 您是否使用过萤火虫来查看请求是否真正通过?您的任何其他意见都将有助于查明问题。
  • 好吧,我已经在本地使用 XAMPP 进行了尝试,并将其托管在服务器上。我没有使用 firebug 的经验。
  • febs,jQuery 不会影响您的问题;您最好使用框架来处理 AJAX,而不是组装自己的调用。该框架将使其变得非常容易并且还可以处理跨浏览器的不兼容性:)
  • 我明白了,我从来没有为 Ajax 使用过 jQuery 功能,我只是从上面的简单示例中构建出来的,我会试一试。
【解决方案2】:

在看到一些建议后,我发现对我的 php 文件的调用从未通过 firebug 发生。 发生的操作是当我通过页面上调用 Ajax 功能的链接导航回我的索引时。一旦我从链接中删除了 href,php 就起作用了!

很棘手,但现在我知道得更好了

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    相关资源
    最近更新 更多