如何在 jquery ajax 中向成功函数发送附加参数

A M*_*Mtz 5 javascript jquery

我有以下 Jquery 代码,我试图$('.cbs-List').HTML(divHTML);根据区域值显示信息。但在成功函数中,我无法读取该区域的值,它指出

“数据未定义”

在这种情况下,将参数或值传递给成功函数的正确形式是什么?

$(document).ready(function() {      
    getSearchResultsREST('LA');
});

function getSearchResultsREST(region) {
    var querySA = 'ClientSiteType:ClientPortal* contentclass:STS_Site Region=LA';
    var queryDR = 'ClientSiteType:ClientPortal* contentclass:STS_Site Region=EM';

        if(region == 'LA') {
            var searchURL = _spPageContextInfo.webAbsoluteUrl + "/_api/search/query?queryText='" + querySA + "'";
        } else {
            var searchURL = _spPageContextInfo.webAbsoluteUrl + "/_api/search/query?queryText='" + queryDR + "'";
        }

        $.ajax({
            url: searchURL,
            method: "GET",
            headers: {
                "Accept": "application/json; odata=verbose"
            },
            contentType: "application/json; odata=verbose",
            success: SearchResultsOnSuccess(data, region),
            error: function(error) {
                $('#related-content-results').html(JSON.stringify(error));
            }
        });
    }

    function SearchResultsOnSuccess(data, region) {
        var results;
        var divHTML = '';

        if (data.d) {
            results = data.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results;

            if(results.length == 0) {
                $('#related-content-results').html('There is No data for the requested query on ' + _spPageContextInfo.webAbsoluteUrl);
            } else {
                for (i=0; i<results.length; i++) {
                    var item = results[i];
                    var itemCell = item.Cells;
                    var itemResults = itemCell.results;

                    // Get values for item result
                    var _title = getValueByKey("Title", itemResults);
                    var _path = getValueByKey("Path", itemResults);

                    divHTML += '<li><a href=' + _path + '>' + _title + '</li>';
                }

                // Display information based on region.

                $('.cbs-List').html(divHTML);

            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

rob*_*sax 4

您有两个问题,而且都很容易解决。

  • 根本就没有必要进去regionSearchResultsOnSuccess您已经可以在那里使用它,因为它是在更高的范围内定义的。
  • 在您传递给的对象中$.ajax,您没有设置SearchResultsOnSuccess为回调,而是调用它。

更改行:

success: SearchResultsOnSuccess(data, region)=>success: SearchResultsOnSuccess

function SearchResultsOnSuccess(data, region) {=>function SearchResultsOnSuccess(data) {

它应该工作正常。

编辑:

这是一个基本示例,说明您需要如何进行设置

function search(region) {
    $.ajax({
        url: 'example.com',
        method: 'GET',
        success: successCallback,
    });

    function successCallback(data) {
        console.log(data, region);
    }
}
search('LA');
Run Code Online (Sandbox Code Playgroud)