我正在尝试在jQuery UI对话框中使用代理来进行$ .post AJAX调用,但我似乎无法让它工作,它没有运行警报框,但帖子工作成功。< / p>
我在这里,这是对话框中的创建按钮。
'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)
而没有运气。
任何帮助都将不胜感激。
如果你需要,我也会设置这个小提琴:http://jsfiddle.net/CubedEye/CfmtJ/
答案 0 :(得分:1)
如果我理解正确,您可以重复使用逻辑来处理数据并使用以下内容关闭对话框:
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');
}
},
});
答案 1 :(得分:0)
您需要在使用之前声明该功能。此外,您可能希望使用var
关键字执行此操作,因此该变量不在全局范围内。请参阅此操作:http://jsfiddle.net/william/CfmtJ/5/。
您也可以在不使用$.proxy()
的情况下实现此目的;您可以将$.ajax()
与context
选项一起使用。因此,原始$.post()
将如下所示:
$.ajax({
type: 'POST',
context: this,
data: {},
success: ajaxSuccess
});