0

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

$.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});

如果可以避免使用闭包,这将很好。我将不胜感激任何帮助。此致。

4

2 回答 2

0

你声明了 eventParams 吗?

var eventParams = '';

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

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

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

function foo() {
    window.yourGlobalVariable = ...;
}
于 2013-08-08T11:26:20.817 回答
0

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

默认情况下,上下文是一个对象,表示调用中使用的 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 
    });
})()
于 2013-08-08T12:12:00.350 回答