0

jQueryを使用してコントローラーを呼び出していますが、コントローラーは値を返しています。jQueryは値を取得していますが、それを変数に設定して返していません。ここで何が間違っていますか?

GetDepartmentID は値 1 で呼び出されます。これはコントローラーに送られ、コントローラーは departmentID を返します。これは 1 です。

コンソールの console.log("Inside-DepartmentID " + data) は 1 を示しているので、コントローラーからデータが返されていることがわかります。

次に、データを departmentID に割り当てます。返してください。次に、私の外部関数は戻り値を console.log しようとしますが、未定義です。理解できません。

.change 関数は GetdepartmentID(1) を呼び出します。

function GetDepartmentID(functionID) {
    var departmentID;
    jQuery.getJSON("/MasterList/GetDepartmentID/" + functionID, null, function (data) {
        console.log("Inside-DepartmentID " + data)
        departmentID = data;
    });
    return departmentID;
}

jQuery('#functionID').change(function () {
        var functionID = jQuery(this);
        //console.log(functionID.val());
        var value = GetDepartmentID(functionID.val());
        console.log("test " + value);
        //GetOwnerList(value);
    });
4

1 に答える 1

2

この方法を試して、AJAX 呼び出しから返されたデータを処理できます。

function processResults(departmentID)
{
   console.log("test " + departmentID);
   GetOwnerList(departmentID);
   // Someother code.
}

function GetDepartmentID(functionID, callBack) {

    jQuery.getJSON("/MasterList/GetDepartmentID/" + functionID, null, function (data) {
        console.log("Inside-DepartmentID " + data)
        callBack(data); //Invoke the callBackhandler with the data
    });

}

jQuery(function(){
jQuery('#functionID').change(function () {
        var functionID = jQuery(this);
        //console.log(functionID.val());
        GetDepartmentID(functionID.val(), processResults); // pass function as reference to be called back on ajax success.
    });
 });

または、次のようにします。これは、後続のすべての処理コードを getJSON ハンドラー内に配置するのと同じくらい良い方法です。

   function processResults(data)
    {
       //handle the data here.
    }

  function GetDepartmentID(functionID) {
    jQuery.getJSON("/MasterList/GetDepartmentID/" + functionID, null, processResults);
  }



jQuery(function(){
    jQuery('#functionID').change(function () {
            var functionID = jQuery(this);
            //console.log(functionID.val());
            GetDepartmentID(functionID.val()); // pass function as reference to be called back on ajax success.
        });
     });
于 2013-05-31T19:31:06.197 に答える