2

jQuery ajax関数内で、成功時にコールバック関数に提供されるデータは次のように定義されます

success: function (data) { ...

しかし、これはJSLintを不幸にします(「ループ内で関数を作成しないでください」)。

jslintエラーを修正する方法の提案に従えば、「ループ内で関数を作成しないでください。」? 、Firebug は「データが定義されていません」と文句を言い、コールバック関数は失敗します。

例:

先立って$(document).ready(function(){

function ajaxSuccess() {
   return function (data) {
      alert (data);
   };
}

内部$(document).ready(function(){

$.ajax({
    type: "POST",
    url: "some-url-here",
    data: ({ "foo" : "bar" }),
    success: ajaxSuccess(data)
});

「データが定義されていません」というエラーが発生します。

しかし、私がそれを

$.ajax({
    type: "POST",
    url: "some-url-here",
    data: ({ "foo" : "bar" }),
    success: function (data) {
        ajaxSuccess(data);
    }
});

その後、すべてが面倒です-しかし、JSLintに関する限り、私は出発点に戻りました。

JSLint を使用して muster を渡したい場合、returned databyを取得urlして問題の関数に渡すにはどうすればよいですか?

4

4 に答える 4

2

呼び出し時にパラメーターが定義されていないため、呼び出しdataからパラメーターを削除する必要があります。ajaxSuccess()data

success: ajaxSuccess()

ajaxSuccess()または、関数を返す必要はありません。

function ajaxSuccess(data) {
    alert(data);
}

success: ajaxSuccess

編集:

コメントに基づいて、ajaxSuccess()定義されている限り、好きなように呼び出して、必要なパラメーターを渡すことができます。

function ajaxSuccess( param ) {
   return function (data) {
      alert (param);
      alert (data);
   };
}

success: ajaxSuccess( "someParameter" )
于 2010-09-24T16:48:29.510 に答える
2

success:関数が必要ですが、そのためだけに作成する必要はありません。

   function ajaxSuccess(data) 
   { 
     alert (data); 
   }
 // :
 // :

$.ajax({ 
    type: "POST", 
    url: "some-url-here", 
    data: ({ "foo" : "bar" }), 
    success: ajaxSuccess     // note: no parameters, just the name.
    } 
});   

もともと、あなたは「データパラメーターを受け取る新しい関数を作成し、それをに割り当てるsuccess」と言われていました。私のバージョンでは、「データパラメーター(ajaxSuccessという名前)を受け取る関数が既にあります。成功に割り当ててください」と表示されます。

于 2010-09-24T16:48:42.117 に答える
0

ajaxSuccess の定義でデータをパラメーターとして使用することはありません。

于 2010-09-24T16:48:08.950 に答える
0

JavaScript 関数を扱うときは、常に戻り値の型について考えます。また、関数参照と関数結果には違いがあります。

// uncalled
var ajaxSuccess = function(){};     // typeof(ajaxSuccess) == 'function'
//called
var ajaxSuccess = function(){}();   // typeof(ajaxSuccess) == 'undefined'
  • return ステートメントのない関数は、呼び出されたときに undefined を返します
  • 呼び出された関数はすぐに実行されます (これが、データが未定義であると言われている理由です)
  • 呼び出されていない関数の割り当ては、その関数への参照です (後で呼び出すことができます)。
  • 呼び出された関数の割り当ては、その関数の return ステートメントです
于 2010-09-24T17:13:56.543 に答える