0

以下のコードに問題があります。私はそのサイトで検索を実行し、葉巻はありませんでした。

.callappに添付されているアイテムをクリックすると、次のようになります。

  1. $ jQuery.load getURL(xapp)から受け取ったURLを含むコンテンツセクション
  2. ステータスに関係なく、「requesthandler」を実行します
  3. リクエストが成功した場合、「requesthandler」がonSuccessを使用して実行します

「requesthandler」に渡した無名関数の実行方法がわかりません。渡したパラメータを使用して「loadURL」関数を実行するには、この無名関数が必要です。これにより、この投稿に関係のない別の一連のイベントがスパイクされます。

ありがとう!

var url = "";
var tab = "";
var app = "base";
var out = "";
$(document).ready(function() {
    $(".callapp").click(function(e) {
        e.preventDefault();
        $('#wxreturn').html("<div id='xtools'></div><div id='xerror'></div><div id='xdapps'></div>");
        hideContent(1, 1);
        $('#xdapps').load( getURL("base"), function(resp, stat, xhr) {
            requesthandler(iStat, iXHR, 0, 0, 0, 0, function() {
                loadURL("tools", "xtools", 1, 1, 1, 1);
            });
        });
        return 0;
    });
});
// piece together a url
function getURL(xapp) {
    // url to return
    var url = null;
    // global tab must not be empty
    if (tab.length) {
        // check if app is defined
        if (!xapp.length) {
            // app is either the global or base
            xapp = app | "base";
        } else {
            // set the global
            if (!(xapp == "tools") && !(xapp == "options")) app = xapp;
        }
        // set the url to return
        url = "/" + tab.toLowerCase() + "/" + xapp.toLowerCase() + "?_=" + Math.random();
    } else {
        // undefined functionality error
        alert("Invalid getURL...Tab Missing");
    }
    // return the url
    return url;
}
// load a url
function loadURL(xapp, target, showApp, showOpt, showTools, clearTools) {
    // defaults
    showApp = showApp | 0;
    showOpt = showOpt | 0;
    showTools = showTools | 0;
    clearTools = clearTools | 0;
    // do only if app and target are defined
    if (!(xapp == undefined) && !(target == undefined)) {
        // set target
        if (!(target.contains("#"))) target = "#" + target;
        // get url string
        var url = getURL(xapp);
        // check if null
        if (!(url == null)) {
            // commence with load   
            $(target).load(url, function(resp, stat, xhr) {
                // call back with the request handler
                requesthandler(stat, xhr, showApp, showOpt, showTools, clearTools);
            });
        }
    } else {
        // undefined functionality error
        alert("Invalid LoadURL...Missing App...Target");
    }
}
// request handler
function requesthandler(stat, xhr, showApp, showOpt, showTools, clearTools, onSuccess) {
    // defaults
    showApp = showApp | 0;
    showOpt = showOpt | 0;
    showTools = showTools | 0;
    clearTools = clearTools | 0;
    onSuccess = onSuccess | null;
    // check for status
    if (stat == "success") {
        // execute
        if (!(onSuccess == null)) {
            // perform function
            (onSuccess());
        }
    } else {
        if (xhr.status == 401) {
            // throw session expired
            sessionTimeOut();
        } else if (xhr.status == 403) {
            // throw authorization failure
            failedAuthorize();
        } else {
            // throw application request failure
            failedAPPRequest(clearTools);
        }
    }
}
4

1 に答える 1

3
onSuccess = onSuccess | null;

|ここでは、1つではなく2つを使用する必要があります。

showApp = showApp || 0;
showOpt = showOpt || 0;
showTools = showTools || 0;
clearTools = clearTools || 0;
onSuccess = onSuccess || null;

安全のために、実行する前に、関数であるかどうかを確認onSuccessします(nullでないことだけではありません)。

if (typeof onSuccess === 'function') {
    // perform function
    onSuccess();  // the extra "()" aren't needed here
}

これを行う場合、onSuccess || nullは必要ありません。

于 2012-07-24T15:29:56.420 に答える