Javascript Web服务请求不起作用

时间:2012-02-13 01:11:08

标签: javascript web-services

我有一个可以返回数据的PHP Web服务(如果我将url输入浏览器,我会得到结果)。我需要使用Javascript从我的Web服务中检索这些数据,但是我对Javascript不太了解。根据我读过的所有教程,示例和StackOverflow问题和答案,这应该有效,但事实并非如此。请帮助!

<script type="text/javascript">

var url = '*working url*';
var xmlhttp = null;
if (window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
} 
else if (window.ActiveXObject) { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } 
else { document.write('Perhaps your browser does not support xmlhttprequests?'); }

xmlhttp.open('GET', url, true);
xmlhttp.send(null);

xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    var myObj = eval ( xmlhttp.responseText );
  } else {
    // wait for the call to complete
  }
};

</script>

另外,我需要帮助确保我正确地调用它。目前我这样做,这可能是问题所在:

<script type="text/javascript">
document.write(myObj);
</script>

1 个答案:

答案 0 :(得分:1)

我知道这并没有直接回答你的问题,但如果你对javascript“不太好”,我建议你直接使用jQuery而不是搞乱低级别的对象。

它还可以帮助您实现跨浏览器兼容性。

http://jquery.com/
http://api.jquery.com/category/ajax/

然而,如果你将来有一段特别无聊的日子,那么回去学习幕后发生的事情总是有益的。

这将是一个使用jQuery(带文本响应)的简单ajax帖子:

$.post(
    "test.php", 
    { postValue1: "hello",
      postValue2: "world!" },
    function(data){
        alert("Success: " + data);
    }, 
    "text");


<小时/> 要回答你的第二个问题(在评论中),代码看起来是正确的,但也许你的反应很糟糕。您可以将附加事件附加到ajax调用以获取其他信息。

此代码是从jQuery的网站借用和修改的:
http://api.jquery.com/jQuery.post/

我从中获取了函数参数信息:
http://api.jquery.com/jQuery.ajax/

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.post("example.php", function() {
  alert("success");
})
.success(function(data, textStatus, jqXHR) { alert("second success"); })
.error(function(jqXHR, textStatus, errorThrown) { alert("error"); })
.complete(function(jqXHR, textStatus) { alert("complete"); });