首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用jQuery $.post()通过函数返回值

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

Stack Overflow用户
提问于 2014-04-22 20:50:59
回答 2查看 71关注 0票数 1

我试图存储一个使用$.post()获得的值,但我遇到了一个问题,在运行$.post()之前正在设置变量。我还是不明白。$.post()封装在通用重用方法中。下面的Javascript代码。

代码语言: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将存储“未定义”,打印到控制台,然后$.post()将运行,但不会将值返回给zip_check。这个问题有意义吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-22 21:02:01

您需要使用回调函数。

代码语言:javascript
运行
复制
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);
   });
}
票数 2
EN

Stack Overflow用户

发布于 2014-04-22 20:58:29

您正在调用一个异步函数。

对您的功能进行一次小小的修改就可以解决这个问题:

代码语言:javascript
运行
复制
function sendPost(target_url, post_data, callback) {
    $.post(target_url, {
        post_data: post_data
    }).done(callback).fail(function (e) {
        console.log('AJAX Failure: ' + e);
    });
}

sendPost('http://jsfiddle.net/echo/jsonp/ ', {
    data: 'send'
}, function (data) {
    console.log(data);
});
  • 它使用给定的url和post数据执行AJAX请求。
  • 当它完成时,会调用it (),这将调用其内部的回调。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23229941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档