我的asp.net Web服务调用有什么问题

时间:2014-10-22 11:09:56

标签: c# jquery asp.net ajax web-services

我正在尝试从jquery使用Web服务方法,我在下面得到此错误

未捕获的SyntaxError:意外的令牌<

指向我的服务方法url。这是我的代码,

$("#btnDialog").click(function () {
    var test = $("#hfID").val();
    testService(test);
    $("#dialog").dialog("open");
});

function testService(test) {
    $.ajax({
        crossDomain: true,
        type: "POST",
        url: "http://localhost:64461/Service1.asmx?op=HelloWorld",
        data: test,
        contentType: "application/json; charset=utf-8",
        dataType: "jsonp",
        success: function(json) {
            $("#lblID").text(json.responseText);
        },
        failure: function(response) {
            alert("Did not work");
        }
    });
}

和网络服务方法是

public class Service1 : System.Web.Services.WebService
{

    [WebMethod]
    public string HelloWorld(string id)
    {
        string toReturn = null;
        if (string.IsNullOrEmpty(id))
        {
            toReturn = "recieved but nothing";
        }
        else
        {
            Class1 class1 = new Class1();
            class1.GetName();
            toReturn = class1.GetName();
        }
        return toReturn;
    }
}

2 个答案:

答案 0 :(得分:0)

试试这个:

function testService(test) {
$.ajax({
    crossDomain: true,
    type: "POST",
    url: "http://localhost:64461/Service1.asmx/HelloWorld",
   data: "{'id':'" + test + "'}",
    contentType: "application/json; charset=utf-8",
    dataType: "jsonp",
    success: function(json) {
        $("#lblID").text(json.responseText);
    },
    failure: function(response) {
        alert("Did not work");
    }
 });
}

答案 1 :(得分:0)

您的[WebMethod]属性告诉端点返回XML。

您的JS代码要求JSON并期待JSONP响应。因此,响应中存在无效的令牌,即XML的第一个<

一种选择是处理XML而不是期待JSON。

另一个选项是包含ScriptMethod属性以及WebMethod属性,以便您可以控制响应。

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]