首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在数据之前执行jQuery回调?

如何在数据之前执行jQuery回调?
EN

Stack Overflow用户
提问于 2010-08-27 09:14:33
回答 4查看 805关注 0票数 2

我有一个简单的post,它执行作为脚本返回的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$.post("/home", { foo: 'bar' }, function(){
    //callback function
}, "script");

下面是发生的事情:

  1. 请求被发送
  2. 一段JS代码作为响应返回并执行
  3. 回调被执行

在执行返回的JS之前,我需要执行的回调。有办法做到这一点吗?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-27 09:24:36

您不能更改jQuery处理请求的方式。毕竟,回调是一个回调,一旦完成任务,就会执行它!但是,您可以将dataType设置为"text",然后对Javascript进行评估。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$.post("/home", { foo: 'bar' }, function(data){
   //callback function

   // execute JS
   $.globalEval( data );
}, "text");

** 更新 **

这就是jQuery在内部所做的(剪短):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// If the type is "script", eval it in global context
} else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
   jQuery.globalEval( data );
}

因此,将globalEval从Ajax请求中取出并在回调函数中执行它是没有安全风险的。

票数 3
EN

Stack Overflow用户

发布于 2010-08-27 10:49:25

使用$.ajax()并构建您自己的脚本标记。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$.ajax({url:"/home",
        data: { foo: 'bar' },
        type: "POST",
        dataType: 'text',     // Return dataType is "text" instead of "script"
        success: function( script ){
           // run your code
           alert('mycode');
           // then create your own script tag
           var tag = document.createElement('script');
           tag.setAttribute('type','text/javascript');
           tag.appendChild(document.createTextNode(script));
           document.getElementsByTagName('head')[0].appendChild(tag);
        }
});
票数 1
EN

Stack Overflow用户

发布于 2010-08-27 09:22:04

您可以使用在发送ajax请求之前执行的"BeforeSend“选项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$.ajax({

    type: "POST",

    url: "SOMEURL",

    data: { "WHATEVER": whatever },

    beforeSend: function() {

      //DO WHATEVER BEFORE SEND AJAX CALL

    }
.....

});

}

希望这能有所帮助。

诚挚的问候。

何塞

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3586600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文