javascript - 使用 jQuery $.post() 通过函数返回值

标签 javascript jquery

<分区>

我正在尝试存储使用 $.post() 获得的值以供使用,但我遇到了变量设置之前 $.post() 正在运行。我不明白。 $.post() 被封装在一个方法中以供泛型重用。下面的 Javascript 代码。

// call the post function
var zip_check = sendPost('{some url here}', new_zip);
console.log(zip_check);

/**
* sendPost
*
* Sends data via jQuery post and returns required result.
*
* @param  string target_url - where post is going
* @param  string post_data  - information to be sent
* @return string            - data to be manipulated
*/
function sendPost(target_url, post_data) {
   $.post(target_url, {
      post_data:post_data
   }).done(function(data) {
      console.log(data);
      return data;
   }).fail(function(e) {
      console.log('AJAX Failure: ' + e);
   });
}

正如我上面所说,zip_check 将存储“undefined”,打印到控制台,然后 $.post() 将运行,但不将值返回给 zip_check。这个问题有意义吗?

最佳答案

您需要使用回调函数。

sendPost('test.php', {zipcode:12345}, checkZipcode);


function checkZipcode(new_zip)
{
  /** Do stuff with your zip code **/

  console.log(new_zip);
}


/**
* sendPost
*
* Sends data via jQuery post and returns required result.
*
* @param  string target_url - where post is going
* @param  string post_data  - information to be sent
* @param  function callback - function called after POST response
*/
function sendPost(target_url, post_data, callback) {
   $.post(target_url, {
      post_data:post_data
   }).done(function(data) {
      console.log(data);

      callback(data);

   }).fail(function(e) {
      console.log('AJAX Failure: ' + e);
   });
}

关于javascript - 使用 jQuery $.post() 通过函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23229941/

相关文章:

javascript - 循环中的异步和同步 JavaScript 代码

javascript - 如何测试单文件 Vue 组件

javascript - 将值重新加载到数组中发生在 javascript 中的最后一个位置之前

javascript - 移动到子菜单后使菜单保持悬停状态

javascript - 如何维护每个 ngFor 项目的按钮状态

javascript - 用jquery替换文本上的特殊字符

javascript - 如果回调被阻止,setInterval 的不同行为

超出索引时插入 JavaScript 数组索引

javascript - 我可以在不注销的情况下获得更新的 emailVerified 吗?

javascript - 延迟加载 JavaScript - 未捕获的 ReferenceError : $ is not defined