2010-03-11 59 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