2010-03-11 60 views
1

我正在使用带有rails的jQuery。我正在尝试创建一个PUT请求来更新任务。通话成功。但是,返回的JavaScript代码不会执行。代码可以正常返回,但它不会执行。返回的RJS代码未执行

这是我正在做的jQuery put请求。

$("#droppable_<%= bin.id -%>").droppable({ 
     drop: function(event, ui) { 
     div_ids = ui.draggable.attr('id').split('_'); 
     $.post('/tasks/' + div_ids[div_ids.length - 1], {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'}, function(data) { 

     }); 
     } 
    }); 

这是rjs代码。

render :update do |page| 
    page.alert 'success' 
    page.remove "draggable_#{params[:id]}" if old_bin_id.to_s != params[:task][:bin_id] 
    page.replace_html "count_#{old_bin_id}", current_user.tasks.bin(old_bin_id).size 
    page.replace_html "count_#{params[:task][:bin_id]}", current_user.tasks.bin(params[:task][:bin_id]).size 
end 

这就是我在完成请求后得到的结果。

try {alert("success");jQuery("#draggable_2").remove();jQuery("#count_2").html("");jQuery("#count_3").html("2");} catch (e) { alert('RJS error:\n\n' + e.toString()); alert('alert(\"success\");\njQuery(\"#draggable_2\").remove();\njQuery(\"#count_2\").html(\"\");\njQuery(\"#count_3\").html(\"2\");'); throw e } 

这是正确的,但它只是不执行。任何想法为什么?

回答

1

因为如果你想处理使用jQuery RJS有两种方式做到这一点:

$("#droppable_<%= bin.id -%>").droppable({ 
    drop: function(event, ui) { 
    div_ids = ui.draggable.attr('id').split('_'); 
    $.post('/tasks/' + div_ids[div_ids.length - 1], {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'}, function(data) { 
     eval(data) #run js ajax returned 
    }); 
    } 
}); 

$("#droppable_<%= bin.id -%>").droppable({ 
    drop: function(event, ui) { 
    div_ids = ui.draggable.attr('id').split('_'); 
    $.ajax({ 
     url:'/tasks/' + div_ids[div_ids.length - 1], 
     data: {'task[bin_id]' : '<%= bin.id -%>', _method:'PUT'}, 
     dataType: "script", 
     type: "POST" 
    }); 
    } 
}); 
+0

'的eval(数据)'为我工作。谢谢! – Chirantan 2010-03-17 11:38:29