首先,我是jquery和ajax的初学者, 我想要做的是从链接中的整个json文件中查看样本
http://soap.madarat.jo/Services/BusinessApplication1-DomainService1.svc/json/gettasks
编辑样本的可能性是什么,
<!DOCTYPE HTML>
<html>
<head>
<title>json test</title>
<script src="js/json2.js" type="text/javascript"></script>
<script src="js/jquery-1.4.2.js" type="text/javascript"></script>
<script src="jtip.js" type="text/javascript"></script>
<script type="text/javascript">
function query() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "http://soap.madarat.jo/Services/BusinessApplication1- DomainService1.svc/json/gettasks", false);
xmlhttp.send();
var results = JSON.parse(xmlhttp.responseText);
var html = '<ol>';
alert(results.GetTasksResult);
if (results.GetTasksResult != null) {
var title;
alert(results);
for (var i = 0; i < results.GetTasksResult.RootResults.length; i++ ) {
entity = results.GetTasksResult.RootResults[i];
html += '<li>'+entity.DoctorID +' by <b>'+ entity.TaskNote +'</b></li> <br><br> ';
}
document.getElementById('results').innerHTML = html;
}
}
</script>
</head>
<body>
<button type="button" onclick="query()">jquery</button>
<div id="results" />
</body>
</html>
但是当我点击按钮时没有任何反应,
为什么会发生这种情况
谢谢
答案 0 :(得分:0)
您没有正确使用请求者对象。你所做的就是发出请求,但没有等待回复。这段代码异步工作,但你认为它是同步的,这就是为什么你开始处理数据之前你甚至得到它。
$.ajax({
type: "GET",
url: "http://soap.madarat.jo/Services/BusinessApplication1-DomainService1.svc/json/gettasks",
success: function(data, status, xhr){
data = data + "" == data ? $.parseJSON(data) : data;
var el = $("#results").append("<ol></ol>").children("ol").first();
if (data.GetTaskResult) {
$.each(data.GetTaskResult.RootResult, function() {
el.append("<li>" + this.DoctorID + " by <b>" + this.Tasknote + "</b></li>");
});
}
}
});
这可能有错误,但它与你的代码大致相同。
另外,你不需要添加json2库,我也不知道你的jtip。
首先尝试熟悉您正在使用的库。在你的情况下,这将是jQuery。它使您编写与浏览器无关的Ajax代码变得更加简单。即使它存在,你甚至没有使用过它。 了解它,使用它。它不应该花费你一天的时间来完成它的所有文档,看看如何使用它以及为什么这样做是明智的。
<强> jQuery documentation 强>