邪魔にならない Javascript を使用して、既存のリンクに対して追加の ajax クエリをトリガーしようとしています。
クエリはサーバーに送信されて処理され、テスト用に文字列 "javascript template ok" が返されます。
ただし、ajax の「成功」関数は呼び出されません。代わりに、トリガーされるのは「エラー」機能です...
Chrome デバッガーを調べたところ、サーバーから応答テキストが返されていることがわかりますが、「成功」メソッドが呼び出されることはありません... :-(
私の電話は
jQuery.ajax({
type: 'POST',
success: function(response) {
$("#details").html(response);
console.log(response);
},
error: function(){
alert("Error\nData could not be retrieve from the server");
},
url: '/treeview/show/1538.js',
cache: false,
});
(この例では URL がハードコードされています)。ブラウザの同じ URL は、レイアウトなしで正しいデータを取得します :-)
URLの「.js」を削除すると、レイアウト付きのhtmlテンプレートが返され、「詳細」divの更新が正しく行われます...
コントローラーは
respond_to do |format|
format.html # show.html.erb
format.js { render :inline => "JAVASCRIPT TEMPLATE !" }
end
ありがとうございました
編集 :
ajax クエリから返されるオブジェクトは次のとおりです (エラーの最初の引数: function(jqXHR) ):
Object
abort: function ( statusText ) {
always: function () {
complete: function () {
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
overrideMimeType: function ( type ) {
pipe: function ( /* fnDone, fnFail, fnProgress */ ) {
progress: function () {
promise: function ( obj ) {
readyState: 4
responseText: "JAVASCRIPT TEMPLATE !"
setRequestHeader: function ( name, value ) {
state: function () {
status: 200
statusCode: function ( map ) {
statusText: "OK"
success: function () {
then: function ( /* fnDone, fnFail, fnProgress */ ) {
__proto__: Object
だから私は正しい応答テキストを取得します??!! エラーはどこにありますか?:-s