Ajax没有调用web方法

时间:2015-04-29 08:45:41

标签: c# jquery ajax

我正在尝试让这个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";

    }

2 个答案:

答案 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";

        }