AJAX,类型为callbackvar或callbackfunction的响应

AJAX, response of type callbackvar or callbackfunction

本文关键字:callbackfunction 响应 callbackvar 类型 AJAX      更新时间:2023-09-26

对于家庭作业,我们使用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数据包一样,但我看不到任何输出。有什么想法吗?谢谢

来自服务器的响应是脚本内容。因此,在页面上注入带有来自服务器的responseText内容的脚本标记,就可以开始了。

当你这样做-

var callback = {success:handleResponse, 
        failure:handleFailure,
        timeout:5000
        };
var transaction = YAHOO.util.Connect.asyncRequest("GET", url, callback, null);

调用的回调是handleResponse,而不是formatData。

相关文章:
  • 没有找到相关文章