我正在尝试让这个loadResources函数工作,所以我把它放在一个按钮的调用之后 - 函数被调用但是ajax总是失败(我得到“加载工程师失败!”警报)和我无法理解为什么
loadResources = function (instructionID) {
var objResource = {};
objResource.instructionID = instructionID;
objResource.ignorePostcode = true;
objResource.pageIndex = 1;
objResource.pageSize = 10;
objResource.totalRows = 0;
var requestResource = $.ajax({
type: "POST",
url: "NewJob.aspx/getResourcesDayShift",
data: JSON.stringify(objResource),
contentType: "application/json; charset=utf-8",
dataType: "json"
});
requestResource.done(function (data) {
alert(data);
});
requestResource.fail(function () {
//$.unblockUI();
alert('loading of Engineers failed!');
});
}
这是我试图调用的方法:
[WebMethod]
public static string getResourcesDayShift(Guid instructionID, bool ignorePostcode, int pageIndex, int pageSize, ref int totalRows)
{
return "blah";
}
答案 0 :(得分:1)
当您调用此方法时,您会收到下一条错误消息
消息:"无法转换类型' System.Int32'输入' System.Int32&'"
您方法的 ref 参数存在此问题。
如果要返回一些数据,可以进行下一步更改
[WebMethod]
public static object getResourcesDayShift(Guid instructionID, bool ignorePostcode, int pageIndex, int pageSize, int totalRows)//return ref keyword
{
return new { value = "blah", totalRows=totalRows+1 };
}
在客户端,你得到
requestResource.done(function (data) {
console.log(data.d); //Object {value: "blah", totalRows: 1}
});
答案 1 :(得分:0)
Javascript总是按值传递。因此,将参考参数传递给您的Web方法是无效的。
在javascript中将Guid转换为字符串数组对象,并将该字符串数组对象传递给Web方法。
在您的客户端。
var ie = ['11111111 - 1111 - 1111 - 1111 - 111111111112','14897bf4-f5d0-4548-a74d-a34f00ae9cad'];
var objResource = { instructionID: ie, ignorePostcode: true, pageIndex: 1, pageSize: 10, totalRows: 0 };
[WebMethod]
public static string getResourcesDayShift(string[] instructionID, bool ignorePostcode, int pageIndex, int pageSize, int totalRows)
{
return "blah";
}