$getJson呼び出しでデータの設定が機能しない理由getJson呼び出しでWTF変数が設定されていません。
getJsonでデータの設定が正常に機能するはずです。次のことを試してください。
$.getJSON("url", { id: id },function (data) {
alert(data);
});
wtfをグローバルに警告可能と定義しましたが、getJson関数から値を取得せず、データにアクセスできない理由を説明しました。これは、ajax関数とasync:setoをfalseに設定することで解決されます。
これは、getJsonが非同期呼び出しであるためです。つまり、getJsonの後のコードは、$(this).html(data);
設定したgetJsonのコールバックdata
が実行されるまで待機しません。
つまり、JSONを取得するためのリクエストが送信され、応答を待たずに次のコード行が実行されます。この動作は、プログラム全体がネットワーク経由でコンテンツをフェッチする際に比較的長い遅延を待たないため、役立ちます。その時点$(this).html(data);
で呼び出された場合、JSONのリクエストが送信されることのみが保証されますが、応答data
はなく、nullのままです。
あなたが試した1つの可能な解決策は、ajaxを「同期」として設定することです。これは推奨されておらず、jQueryは非推奨になるように見えます。
そうは言っても、解決策は、データを取得した後に実行する必要のあるロジックcall back function
、getJson
または使用している非同期メソッドを移動することです。
また、別の問題は、getJson呼び出し内で$(this).html()を設定できない理由です。
getJsonには、最後の引数としてコールバック関数がありますthis
。予期しない場所でこの関数を参照しています。
$.getJSON("url", { id: id },function (talentNaziv) {
//this??
});
JavaScriptでは、これは常に、実行している関数の「所有者」、つまり関数がメソッドであるオブジェクトを指します。
$('a[id=talentNaslov]')
関数の所有者は、あなたが思うようにjQueryオブジェクトではないので、それthis
を指さないでください。
私はまだあなたが以前に厄介な方法で使用している理由を理解していません、質問と一緒にあなたの意図を追加することはあなたにあなたの問題を解決するより具体的な答えまたはより精力的な方法を得るでしょう。
アップデート
他の回答に対するあなたのコメントから、あなたは次のようなものを探しているようです:
$('a.beforeme').each(function(){
var $ele = $(this);
var id = $ele.html();//var id = $(this).html();
$.getJSON('/echo/json/',{id: id},function(data){
data = {msg: "this is it"}; // you will not need it
console.log(data.msg);
$ele.before(data.msg);
});
});
フィドルhttp://jsfiddle.net/PYhhS/1/