私はSOに関する多くの「類似の」q&aスレッドを見てきましたが、正直なところ、私はjsプログラミングをあまり把握していないため、多くの回答を理解するのが難しいと感じています. (私自身の状況に当てはまる限り)。
コンテキストはこれです。2 つの php スクリプトがあり、1 つは設定された期間の customer_ids (json エンコード) のリストを返し、もう 1 つはニュース フィードの設定を返します (json エンコード)。
jQuery で ajax 関数をセットアップする方法の基本的な理解を得るために少しググって、次のように書きました。
$('document').ready(function() {
$.ajax({
type:'GET', url: 'cust_selection.php', data: '',
succes:function(cstmrid) {
var clistlen = cstmrid.length;
var i=0;
var cstmr;
for( ;cstmr=cstmrid[i++]; ) {
$('#adminPanel>ul>li').append("<a href='' onclick='alert("+cstmr+")' class='lst_admin basic'>"+cstmr+"</a>"); //alert to be replaced with a function call which passes customerid to the function below.
}
},
dataType:'json'
});
var cstmrid = "483972258"; //hardcoded for testing purposes
$.ajax({
type:'GET', url:'newsfpref.php?', data:'cref='+cstmrid,
success:function(npfdata) {
var item;
var n=0;
for( ;item=npfdata[n++]; ) {
var news = npfdata[n].nsource;
$('#adminMain>table>tbody').append("<tr><td>"+item+"</td></tr>");
}
},
dataType:'json'
});
});
最初の ajax 関数から、クリックして 2 番目の ajax 関数を起動し、顧客 ID を渡して、構成されたニュース ソースのリストを取得できるようにするリンクのリストを取得します。彼らのページ。アラートとハードコードされた顧客 ID はどちらも機能が「機能している」ことを示していますが、最初の機能を次のように調整しようとすると、...
$('#adminPanel>ul>li').append("<a href='' onclick='getCustomerNP("+cstmr+")' class='lst_admin basic'>"+cstmr+"</a>");
... 以下のように、2 番目の関数の変更されたバージョンを呼び出しています: ...
function getCustomerNP(cstmrid) {
$.ajax({
type:'GET', url:'newsfpref.php?', data:'cref='+cstmrid,
success:function(nprfdata) {
var item;
var n=0;
for( ;item=npfdata[n++]; ) {
var news = npfdata[n].nsource;
$('#adminMain>table>tbody').append("<tr><td>"+item+"</td></tr>");
}
},
dataType:'json'
});
}
この時点ですべてが失敗しているようです。2 番目の関数は変数を「受け取っていないようです」 jQuery ajax 関数が相互に対話する方法。
ご覧のとおり、私は多くの SO Q&A スレッドから少しのコードとアイデアを共食いしましたが、あまり理解せずにコピーすると、イライラするほど依存した生活になります。
あなたが提供できる限り多くの - 広範な - コメントと、解決策または 2 つ (当然のことながら) をいただければ幸いです。
編集:これ以上混乱しないように、私は上記を変更し、途中で(多くの)エラーとタイプミスを修正しました。現時点では、コードは次のようになります。
$('document').ready(function () {
$.ajax({
type: 'GET', url: 'cust_selection.php', data: '',
succes: function (cstmrid) {
var clistlen = cstmrid.length;
var i = 0;
var cstmr;
for (; cstmr = cstmrid[i++]; ) {
var a = $("<a href='' class='lst_admin basic'>" + cstmr + "</a>").click(function () {
getCustomerNP(cstmr)
})
$('#adminPanel>ul>li').append(a); //alert to be replaced with a function call which passes customerid to the function below.
}
},
dataType: 'json'
});
function getCustomerNP(cstmr) {
alert(cstmr);
}
});