访问传递给$ .get的参数到成功回调函数

时间:2013-08-08 11:22:32

标签: javascript jquery

我想访问作为数据传递给$ .get的参数 jQuery的。代码是这样的:

$.get(requestUrl,
         {lesson: eventParams.lessonId,
          page: eventParams.page}, 
          function(data) {
                // here I want to access 
                // lesson or page 
          });

现在我做了这样的事情:

$.get(requestUrl,
         {lesson: eventParams.lessonId,
          page: eventParams.page}, 
          (function(contextObject) {
                return function(data) {
                // Here I accessing  
                // contextObject.lesson
                // and 
                // contextObject.page               
           }})({lesson: eventParams.lessonId,
                               page: eventParams.page});

如果可以避免使用闭包,这将有效。 我将不胜感激任何帮助。 最好的问候。

2 个答案:

答案 0 :(得分:0)

你宣布了eventParams吗?

var eventParams = '';

您可以在全局范围内使用var(在所有函数之外)来声明全局变量:

var yourGlobalVariable;
function boo() {
    // ...
}

或者,您可以在窗口上分配属性:

function foo() {
    window.yourGlobalVariable = ...;
}

答案 1 :(得分:0)

您的params对象(或至少其属性)可以作为回调的this context访问,请参阅context option的文档:

  

默认情况下,上下文是一个对象,表示调用中使用的ajax设置($.ajaxSettings与传递给$.ajax的设置合并)

所以使用

$.get(requestUrl, {
    lesson: eventParams.lessonId,
    page: eventParams.page
}, function(data) {
    console.log(this);
    // use this.data.lesson or .page
});

顺便说一句,你目前使用的关闭是非常无益的,因为你太重复了一切。如果您刚刚从回调中访问eventParams,那将会更容易。如果你不相信context或想要使用闭包来清楚,那么这里是如何正确地做到这一点(假设你不能使用eventParams因为它们是不稳定的):

(function() {
    var data = {
        lesson: eventParams.lessonId,
        page: eventParams.page
    };
    return $.get(requestUrl, data, function(resultData) {
        // here use data.lesson or .page 
    });
})()