最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - pass data through a ajax request to a callback function - Stack Overflow

programmeradmin1浏览0评论

Is it possible to pass data through a Ajax request to the Callback function without global variables?

for e.g. this request function should pass the passData through the callback function which should get also normal response data?!

function rquest(callback, passData){
    $.ajax({
         type: "POST",
         url: someURL,
         success: callback(passData)
    });
};  

function myCallback(data, passData){
    var responseData = data;
    var SomeOtherData = passData
    //do Something
};

rquest(myCallback, "Hello World");

so "Hello World" should be in passData and data should be the normal response from server...if i do it in this way data is "Hello World" and passData is undefined.

Is it possible to pass data through a Ajax request to the Callback function without global variables?

for e.g. this request function should pass the passData through the callback function which should get also normal response data?!

function rquest(callback, passData){
    $.ajax({
         type: "POST",
         url: someURL,
         success: callback(passData)
    });
};  

function myCallback(data, passData){
    var responseData = data;
    var SomeOtherData = passData
    //do Something
};

rquest(myCallback, "Hello World");

so "Hello World" should be in passData and data should be the normal response from server...if i do it in this way data is "Hello World" and passData is undefined.

Share asked Jan 5, 2016 at 10:49 LindaLinda 2,4054 gold badges32 silver badges34 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 8

Wrap the call to the provided callback in an anonymous function. Try this:

function rquest(callback, passData){
    $.ajax({
         type: "POST",
         url: someURL,
         success: function(data) { 
             callback(data, passData)
         }
    });
};  

function myCallback(data, passData) {
    var responseData = data;
    var SomeOtherData = passData
    //do Something
};

rquest(myCallback, "Hello World");

I found the answer in the below link - some more patterns are available to achieve this - Adding some of the content from the reference answer.

The pattern you'd like to use could work if you create a closure inside your rssToTarget function:

function rssToTarget(element) {
  return function (xmlData) {
    // work with element and the data returned from the server
  }
}

function doSomething(url, elem) {
    $.ajax({ type: "GET",
         url: url,
         dataType: "xml",
         success: rssToTarget(elem)
       });
}

When rssToTarget(elem) is executed, the element parameter is stored in the closure, and the callback function is returned, waiting to be executed.

Reference link https://stackoverflow./a/1194187/3082706

发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>