Jquery Can';我不能让$.proxy工作,我做错了什么?
我试图在jQueryUI对话框中使用代理来调用$.post AJAX,但我似乎无法让它工作,它没有运行警报框,但post工作正常 这是我所在的位置,这是对话框上的创建按钮Jquery Can';我不能让$.proxy工作,我做错了什么?,jquery,ajax,jquery-ui,Jquery,Ajax,Jquery Ui,我试图在jQueryUI对话框中使用代理来调用$.post AJAX,但我似乎无法让它工作,它没有运行警报框,但post工作正常 这是我所在的位置,这是对话框上的创建按钮 'Create Category' : function(){ var newCategory = $('#new-category-name').val(); if(newCategory != ''){ var data = {category:newCategory, ci_csrf_token:
'Create Category' : function(){
var newCategory = $('#new-category-name').val();
if(newCategory != ''){
var data = {category:newCategory, ci_csrf_token: $("input[name=ci_csrf_token]").val()};
$.post('/create/category', data, $.proxy(this.ajaxSuccess, this),'json');
}
ajaxSuccess = function(data)
{
alert ("Here");
// Handle Data
$(this).dialog('close');
}
},
'Cancel' : function(){
$(this).dialog('close');
}
我还尝试了对话框初始化中的this.ajaxSuccess=function(data)
和ajaxSuccess:function(data)
,但没有成功
任何帮助都将不胜感激
如果您需要,我还设置了此小提琴:如果我理解正确,您可以重用您的逻辑来处理数据,并使用如下方式关闭对话框:
function handleData(data, dg) {
alert(data);
$(dg).dialog('close');
}
//$('#add-category-dialog').ajaxSuccess(function(){
// $(this).dialog('close');
//});
$('#add-category-dialog').dialog({
modal: true,
buttons: {
'Create Category' : function(){
$.post('/', {}, function(data){
handleData("test",$('#add-category-dialog'))
});
},
'Cancel': function(){
$(this).dialog('close');
}
},
});
$.ajax({
type: 'POST',
context: this,
data: {},
success: ajaxSuccess
});
您需要在使用函数之前声明它。此外,您可能希望使用
var
关键字来执行此操作,因此该变量不在全局范围内。请参见此操作:
您也可以在不使用$.proxy()的情况下实现这一点;您可以将$.ajax()
与上下文
选项一起使用。因此,原始的$.post()
如下所示:
function handleData(data, dg) {
alert(data);
$(dg).dialog('close');
}
//$('#add-category-dialog').ajaxSuccess(function(){
// $(this).dialog('close');
//});
$('#add-category-dialog').dialog({
modal: true,
buttons: {
'Create Category' : function(){
$.post('/', {}, function(data){
handleData("test",$('#add-category-dialog'))
});
},
'Cancel': function(){
$(this).dialog('close');
}
},
});
$.ajax({
type: 'POST',
context: this,
data: {},
success: ajaxSuccess
});
请参见操作:。要显示数据并关闭对话框吗?这需要使用$.proxy吗?我想不是,只是觉得这是一个更优雅的解决方案。:)我一直在使用$('#dialog')。dialog('close')代码>并且工作正常。我可能会坚持下去…为什么不创建一个函数来处理数据并关闭对话框,在所有$.post中调用它呢?是的,听起来有点好,谢谢!非常感谢。。。我知道ajax上下文的事情,这就是我发现代理的原因。