首页 > 解决方案 > 如何将自定义参数传递给 jQuery AJAX 方法的回调方法?

问题描述

我已经看到了这个问题的各种答案,但我无法将它们映射到我的情况。我认为可能是其中一些问题的答案,似乎是旧的编码方式,或者对我来说不够熟悉,以至于我无法理解如何在我的情况下实施它们。

我让 PHP 生成了一个 records.json 文件,我的应用程序需要在该文件中查询几种方法的逻辑。

function queryRecords(recordId, requiredField) {
    $.ajax("javascript/records.json", {
        dataType: "json",
        success: callBack,
        error: function (jqXhr, textStatus, errorMessage) {
            alert("AJAX error: unable to retrieve records from records.json\n\n" + errorMessage);
        }
    });
}

function callBack(response) {
    $.each(response, function(index, records) {
        if (records["MediaItemID"] == recordId) {
            $.each(records, function(key, value) {
                if (key == requiredField) {
                    return value;
                }
            });
        }
    });
}

queryRecords("14", "MediaItemName");

每次我需要查询记录时,我都需要传递recordIdrequiredField来获取该记录字段的值(根据 callBack 方法中的循环)。但是,我似乎受限于这种方法,因为我无法将这些值作为参数成功传递。如果我在 success内输出到控制台,我会看到该值,但我需要在 success 之外访问该值,这就是我已经走了多远。我已经看到了很多关于这个的页面,我的头很痛。请问你能帮忙吗?

标签: jqueryajaxparameterscallback

解决方案


我测试了https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function中建议的代码,只是为了看看我是否可以访问 Promise 之外的值,但它失败了一直在做...

var xyz = "please";

function resolveAfter2Seconds() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('resolved');
    }, 2000);
  });
}

async function asyncCall() {
  console.log('calling');
  const result = await resolveAfter2Seconds();
  xyz = result;
  //console.log(result);
  // expected output: "resolved"
}

asyncCall();

console.log(xyz);

它返回“请”。

要么我不理解所提供的解决方案,要么我试图实现的目标没有被理解。我很高兴接受这是一个“我”的问题。

如果只是在 ajax 查询中将 async 设置为 false 的情况,那么答案会很简单,但这已被弃用。

答案是:我放弃了,但这只是因为多个方法依赖多个 ajax 调用来实现它们的逻辑可能是不明智的。

因此,我将把 json 文件中的记录导入到数组中,这样我就可以随时访问数据而不会感到头疼。


推荐阅读