Ajax Call没有发生在WebMethod上

时间:2015-04-25 21:57:25

标签: javascript jquery ajax

我正在尝试使用包含Ajax Call请求的函数调用WebMethod。但它正在提供Internal Server error 500。这是包含Ajax的函数..

function ajaxCall(URL) {

var serverData = "";

$.ajax({
    url: URL,
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    type: 'POST',
    success: function (queriedData, textStatus, XMLHttpRequest) {
        serverData = queriedData;
    },
    error: function (request, status, error) {
        alert(error);
    }
});
return serverData;
}

在这里我试着调用这个jquery函数..

 var checkInBookingIDData = ajaxCall(URL);

,这是我试图传递的URL值。

Default.aspx/getCheckinData?BookingId=102

我无法找出我出错的地方。请帮助我..谢谢..

更新

 [WebMethod]
 public static string getCheckinData(string BookingID)
 {
   //My code goes her
 }

2 个答案:

答案 0 :(得分:0)

尝试这种方式(注意参数如何作为data: { BookingId: 102 }传递):

function ajaxCall(URL) {

    // URL must be .../Default.aspx/getCheckinData

    var serverData = "";

    $.ajax({
        url : URL,
        data: { BookingId: 102 },
        dataType : 'json',
        contentType : "application/json; charset=utf-8",
        type : 'POST',
        success : function (queriedData, textStatus, XMLHttpRequest) {
            serverData = queriedData;

            // process serverData here
        },
        error : function (request, status, error) {
            alert(error);
        }
    });

    // This won't work this way
    //return serverData;
}

答案 1 :(得分:0)

如果您将请求类型定义为POST,则不能通过URL直接传递查询字符串参数,因为这将是GET请求Refer。在POST请求中,查询字符串作为HTTP消息体发送。格式应如下:

function ajaxCall(URL) {
  var serverData = "";

  $.ajax({
    url: URL,
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    type: 'POST',
    data: JSON.stringify({ BookingId: '102' }),
    success: function (queriedData, textStatus, XMLHttpRequest) {
        serverData = queriedData;
    },
    error: function (request, status, error) {
       alert(error);
    }
 });
 return serverData;
}

只需确保您的网址以您的方法名称“ Default.aspx / getCheckinData ”结尾。