对于家庭作业,我们使用GET方法访问Web服务器,在该服务器上返回JSON,XML和脚本的类型。对于脚本,它定义为:
如果指定了脚本,则还必须指定
a. callbackfunction
callme([{"id":"1383","name":"Sweet Deal","desc":"Great place for books","url":"http://amazon.com"}]);
b. callbackvar
items=[[{"id":"1383","name":"Sweet Deal","desc":"Great place for books","url":"http://amazon.com"}]];
所以我的sendRequest()方法如下:
function sendRequest()
{
var transmission = document.getElementById("transmission").value;
var url = "http://classwebsite.php"
+ "?userid=crystal"
+ "&response=" + encodeValue(transmission);
if (transmission == "script") {
url += "&callbackfunction=formatData";
}
var callback = {success:handleResponse,
failure:handleFailure,
timeout:5000
};
var transaction = YAHOO.util.Connect.asyncRequest("GET", url, callback, null);
}
但我不确定在hw指令中使用callbackvar或callbackfunction意味着什么。对我而言,数据包看起来像一个JSON数据包,我已经有一个解析JSON数据包并格式化数据的方法。
// What gets passed into this method is: YAHOO.lang.JSON.parse(response.responseText);
function formatData(message) {
var str = "<table border=1 class='editable'>";
for (var i = 0; i < message.length; i++) {
str += "<tr>" + "<td>" + message[i].id + "</td>" +
"<td>" + message[i].name + "</td>" +
"<td>" + message[i].url + "</td>" +
"<td>" + message[i].desc + "</td>" +
"<td>" + "<a href='#' onclick='deleteRequest(this); return false' id='" + message[i].id + "'>delete</a>" + "</td>" + "</tr>";
}
str += "</table>";
return str;
}
所以在sendRequest的handleResponse方法中,我想我可以这样做:
else if (transmission == "script") {
msg = formatData(response);
}
var responseOutput = document.getElementById("responseOutput");
responseOutput.innerHTML = msg;
就像我使用我的JSON数据包一样,但我没有看到任何输出。有什么想法吗?感谢。
答案 0 :(得分:0)
来自服务器的响应是脚本内容。因此,从页面上的服务器注入带有responseText内容的脚本标记,你就可以了。
当你这样做时 -
var callback = {success:handleResponse,
failure:handleFailure,
timeout:5000
};
var transaction = YAHOO.util.Connect.asyncRequest("GET", url, callback, null);
调用的回调是handleResponse,而不是formatData。