モーダル ダイアログ内に表示されるフォームで getJSON を使用して div コントロール (#test) を更新しようとしています。ダイアログは、ユーザーが定義済みのリンクをクリックするたびに表示されます。呼び出される関数は次のとおりです。
// Displays modal dialog with a form
function job_description(job_id) {
$('<div id="server-form"></div>').load('/description_form').dialog(
{
position: {
my: 'top top',
at: 'top top',
offset: '0 100',
of: $('body')
},
width: 650,
modal:true,
resizable: false,
title: 'Job description details',
buttons: {
"close": {
class: "btn btn-primary",
text: "Close",
click:
function() {
$( this ).remove();
}
}
},
close: function(event,ui) {
$(this).remove();
}
});
var response = $.ajax({
type: 'GET',
url: '/descriptions_list/'+job_id,
cache: false,
datatype: 'json',
success: function(response){
var obj = $.parseJSON(response);
//console.log(obj.description.title);
$('#test').html(obj.description.title);
},
error: function(msg) {
alert('error: '+msg);
}
});
}
ajax 呼び出しが常に機能することはわかっていますが (コンソールを確認したところ、アラートが表示されませんでした)、#test div が更新されないことがあります。ランダムに発生します。最初の load() メソッドは、実際にフォームをロードする REST サービスを呼び出し、次に ajax を使用して別の URL からデータを取得します。#test div もブートストラップ カルーセル内にあります。更新しようとしている div 部分は次のとおりです。
<div id="wrapper">
<div id="description-editor" class="carousel slide" style="padding-left: 20%;padding-right: 20%">
<!-- Carousel items -->
<div class="carousel-inner">
<form>
<div class="item well" style="height: 500px">
<h3>Title</h3><br/>
<div id="test" style="width: 300px; height: 200px">I should get updated...</div>
</div>
<div class="item well" style="height: 500px">
<h3>Some other info</h3><br/>
<p>To be completed</p>
</div>
</form>
</div>
<!-- Carousel nav -->
<a class="carousel-control left" href="#description-editor" data-slide="prev" data-interval="">‹</a>
<a class="carousel-control right" href="#description-editor" data-slide="next" data-interval="">›</a>
</div>
</div>
呼び出しが成功したときに #test div が常に更新されない理由を理解しようとして、私は髪を引っ張っています (常にそうです)。async: false を使用してみましたが、それも役に立ちませんでした... jquery 1.7.1 を使用しています。
ありがとう。