如果问题不清楚,我是一个jquery noobie,所以道歉。我一直在尝试从各个帖子中回顾一下这些回调,但是我一直在坚持它们如何组合在一起。
基本上,我目前有3个方法进行ajax调用并填充元素。一个函数的例子
function RetrieveUsers() {
$.mobile.pageLoading(false);
$.ajax({
dataType: "json",
contentType: "application/json;charset=utf-8",
type: "POST",
data: args,
url: "Default.aspx/RetrieveUsers",
success: function (d) {
$("#userList").empty();
var html;
var rows = eval('(' + d.d + ')');
for (var o in rows) {
var row = rows[o];
html += '<li>' + row.name + '</li>';
}
$("#userList").html(html);
$.mobile.pageLoading(true);
},
error: function (x, t, e) {
alert(x.responseText);
}
});
我想要做的是重新使用ajax调用功能并将行集传递回适当的方法,该方法知道如何在表单上填充所需的元素。
function SearchUsers(searchText) {
var url = "Default.aspx/SearchUsers";
var parameterData = '{ "searchText": "' + searchText + '" }';
CallPageMethod(url, parameterData, DisplayUsers(userData));
}
function DisplayUsers(users)
{
//populate the element
var html;
for(var user in users)
{
html += '<li>' + user.userName + '</li>';
}
$('#userList').html(html);
$.mobile.pageLoading(true);
}
function CallPageMethod(url, paramterData, callbackFunctionWithArgs)
{
$.mobile.pageLoading();
$.ajax({
dataType: "json",
contentType: "application/json;charset=utf-8",
type: "POST",
data: paramterData,
url: url,
success: function (d) {
var rows = eval('(' + d.d + ')');
callbackFunctionWithArgs(rows);
},
error: function (x, t, e) {
alert(x.responseText); //just use generic alert for now
}
}
例如,我的任务搜索现在看起来像这样:
function SearchTasks(searchType, searchText)
{
var url = "Default.aspx/SearchTasks";
var parameterData = '{ "searchType": "' + searchType + '", "searchText": "' + searchText + '" }';
CallPageMethod(url, parameterData, DisplayUsers(userData));
}
function DisplayTasks(tasks)
{
var html;
for(var task in tasks)
{
html += '<li>' + task.Status + ', ' + task.Description + '</li>';
}
$('#taskList').html(html);
$.mobile.pageLoading(true);
}
任何人都能帮我理解如何连接它吗?
感谢 马特
答案 0 :(得分:1)
从第一次阅读看起来很合理,但有一件事你需要记住:如果你试图传递对函数的引用,你不应该使用()
或传递参数,因为这会导致调用功能。
所以,
CallPageMethod(url, parameterData, DisplayUsers(userData));
应该是:
CallPageMethod(url, parameterData, DisplayUsers);