Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery ajax和javascript对象_Javascript_Jquery - Fatal编程技术网

jQuery ajax和javascript对象

jQuery ajax和javascript对象,javascript,jquery,Javascript,Jquery,我以前使用过prototype,现在正在尝试学习jquery。 问题是:我有一个进行ajax调用的对象,我希望成功回调调用对象中的函数。问题是在回调函数中,“this”没有指向我的原始类 例如: function C(){ this.loadData(); } C.prototype.loadData = function(){ $.ajax({ url:"URL/", dataType:'json', success:this.data

我以前使用过prototype,现在正在尝试学习jquery。 问题是:我有一个进行ajax调用的对象,我希望成功回调调用对象中的函数。问题是在回调函数中,“this”没有指向我的原始类

例如:

function C(){
    this.loadData();
}
C.prototype.loadData = function(){
    $.ajax({
       url:"URL/",
       dataType:'json',
       success:this.dataRetreived
    });
}
C.prototype.dataRetreived = function(JSON){
    console.info(this);
    console.info(JSON);
}
使用Prototype我可以简单地使用
.bind(this)
,但是jquery有一种不同的处理方式。

jquery 1.4中有一种“代理”方法,类似于Prototype或Functional中的“bind”:

  success: $.proxy(instanceOfC, C.prototype.dataRetrieved)

顺便说一句,
function.bind
as in Prototype是ECMAScript第五版的标准部分,因此您将来可以使用它,而无需破解函数原型。@bobince:这将是一个很好的补充,特别是因为我倾向于使用。bind很多…是的,我也是(虽然是通过修补
Function.prototype
我自己,因为我不使用prototype)。在严格的模式修复和向语言中添加长的标准Mozilla功能之间,JavaScript终于变得不那么可怕了。我现在正在测试这个变体,似乎是.proxy起了作用……但我从服务器返回的json字符串似乎无效……
window.json.parse({ret:“d”})
在firefox中似乎被认为是无效的(在firebug控制台中尝试了thia,它引发了
SyntaxError:JSON.parse{message=“JSON.parse”,more…}
。有什么想法可以解释为什么会这样说吗?我已经弄明白了…JSON的有效语法似乎是
“{”ret”:“d”}“
…此外,AJAX请求似乎有一个
上下文
属性,这也有同样的技巧:)