私は、AJAX呼び出しを行い、結果をブロックに更新するJavaScript関数(同じページ上)を呼び出すボタンを含むWebページを生成するCSHTMLページを作成しています。それは次のようになります。Javascript関数はHTMLブロックを更新していません - それは必要ですか?
function getItems()
{
$(result_div).html("<b>Processing...</b>");
var resultString = "";
$.ajax({
type: "POST",
url: '@Url.Action("GetItems", "DataHandler.svc")',
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
resultString = "<b>Items:</b><br />";
var itemNames = data;
for (var N in itemNames) {
resultString += (itemNames[N] + "<br />");
}
},
error: function (HelpRequest, ErrorCode, TheError) {
resultString = "Error creating items list:<br />" + TheError;
},
async: false
});
$(result_div).html(resultString);
}
私はボタンを押すと、関数が呼び出され、そして最終的には正しいデータが「result_div」ブロックに表示されます。しかし、ブロックは関数が返るまで更新されず、ただちに「処理中...」と表示されるのではありません。
しかし、私はこの代わりにしている場合:それはデータに置き換えされる前に、
function getItems()
{
var resultString = "<b>Processing...</b>";
$.ajax({
type: "POST",
url: '@Url.Action("GetItems", "DataHandler.svc")',
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
resultString = "<b>Items:</b><br />";
var itemNames = data;
for (var N in itemNames) {
resultString += (itemNames[N] + "<br />");
}
},
error: function (HelpRequest, ErrorCode, TheError) {
resultString = "Error creating items list:<br />" + TheError;
},
complete: function (Request, Status) {
$(result_div).html(resultString);
}
});
$(result_div).html(resultString);
}
が、それはすぐに「...処理」を表示しません。
私は、.html呼び出しがすぐに更新されると仮定して間違っていますか?ページを更新する前に関数が終了するのを待っていますか?
変数 'result_div'にはどのような値がありますか? – Tushar
最初は? –
Ajaxは非同期ですが、外部で宣言された変数は内部では未定義です;)' result_div'はdiv/spanなどのコンテナタグでなければなりません – Tushar