「form.js」と呼ばれる複数のファイル間で共有される汎用関数のリストを含む 2 つの JS ファイルと、「blog.form.js」と呼ばれる CMS の特定のページに固有の別の JS ファイルがあります。
"form.js" の内部には、データベースからレコードをロードするように要求するたびに jQuery.ajax() 要求を行う汎用 JS 関数があります。
function load_record( field_id, class_name, entity_type ) {
// Send ajax request to load the record, and enable the form's state once the record's content has been received.
var response = $.ajax({
async: false,
dataType: "json",
data: {
action: "load_"+entity_type,
id: $("#"+field_id+"_list").val()
},
success: function(response) {
// Make visible the buttons to allow actions on record, such as deleting or renaming.
$("#"+field_id+"_actions").show();
// Make visible the container of all form elements related to the record.
$("#"+field_id+"_form_inputs").show();
// Must return response so the calling JS file can use the values returned to
// populate the form inputs associated with the record that's just been loaded
// with the correct values.
return response;
},
type: "post",
url: "/ajax/record/"+class_name
});
alert( response.link + " " + response + " " + response.responseText);
return response;
}
「blog.form.js」内で、リストを含むメニューからロードするデータベース レコードを選択すると呼び出される関数があります。
// Select a link for editing.
$("#links_list").live( "change", function(){
// Insert response returned from function call to load the db record into a variable.
// This is so the form inputs associated with the record loaded can be populated with the correct values.
var response = load_record('links_edit', 'blog', 'link');
alert( response.link );
$("#links_edit_url").val( response.link );
});
ajax リクエストは、目的のレスポンスを返します。残念ながら、load_record() 内のデバッグ アラート ステートメント "alert( response.link + " " + response + " " + response.responseText)" は、次を返します: undefined [Object XMLHTTPRequest] {"link": "http://www .url.com"}。
したがって、他の関数のデバッグ アラート ステートメント「alert( response.link )」も未定義を返します。
XMLHTTPRequest オブジェクトが正常に返されました。では、response.link がその値が未定義であると述べているのはなぜですか?
どんな助けでも大歓迎です。