我已经查看了很多关于 SO 的“类似”问答线程,但老实说,由于我对 js 编程没有太多了解,我发现很难理解很多答案(只要它们可能适用于我自己的情况)。
上下文是这样的,我有两个 php 脚本,一个在一段时间内返回 customer_ids 列表(json 编码),另一个返回他们对新闻提要的偏好(json 编码)。
我写了以下内容,在 google 上搜索了一下以基本了解如何在 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 函数中,我得到一个链接列表,我希望能够单击以启动第二个 ajax 函数并将客户 ID 传递给它,以便它可以获取他们配置的新闻源列表他们的页面。警报和硬编码的客户 ID 都表明这些功能正在“工作”,但是当我尝试调整第一个功能时:...
$('#adminPanel>ul>li').append("<a href='' onclick='getCustomerNP("+cstmr+")' class='lst_admin basic'>"+cstmr+"</a>");
...正在调用第二个函数的修改版本,如下所示:...
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'
});
}
在这一点上,一切似乎都失败了。第二个函数似乎没有“接收”变量,我不确定它是否是我忽略的基本内容(比如一些混乱的“和”位置),或者我想要完成的实际上不是jQuery ajax 函数相互交互的方式。
正如你所看到的,我已经从许多 SO q&a 线程中蚕食了一些代码和想法,但是在没有太多理解的情况下进行复制会导致令人沮丧的依赖生活。
我将不胜感激 - 广泛 - 您可以提供的评论,以及一两个解决方案(自然)。
编辑:不要让任何人进一步混淆,我一直在修改上述内容并纠正我的(许多)错误和拼写错误。目前,代码如下所示:
$('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);
}
});