jQuery Tokeninput和asp.net webservice的问题

时间:2011-08-01 14:57:39

标签: jquery asp.net json jquery-plugins

我在我的网站上写了以下webservice asmx文件:

[WebService(Namespace = "http://eumcore.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class jsonTest : System.Web.Services.WebService {

    public jsonTest () {

    }

    [WebMethod(Description = "Gets the names matching part of a title.")]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public void getName() {
        List<nameEntry> nameList = new List<nameEntry>();
        nameList.Add(new nameEntry() {id="1", name="John"});
        nameList.Add(new nameEntry() { id = "3", name = "Alex" });
        this.Context.Response.ContentType = "application/json; charset=utf-8";

        JavaScriptSerializer js = new JavaScriptSerializer();
        string strJSON = js.Serialize(nameList);
        this.Context.Response.Write(strJSON);
    }    
}

作为一个开始,我希望每次都返回相同的数组,当我直接调用它时,webservice的结果是:

[{"id":"1","name":"John"},{"id":"3","name":"Alex"}]

哪个是正确的答案,当我用它作为本地输入时结果很好但是当我在tokeninput的输入法中调用webservice时(我给函数分配了一条错误信息)我得到以下错误: 200 parsererror undefined“

任何人都可以帮我搞清楚吗?

由于

多伦

编辑:在使用jquery代码后,我设法接收数据,但我收到以下错误:

200

parsererror

[{ “ID”: “1”, “姓名”: “AAA”},{ “ID”: “3”, “名称”: “AAA”}] { “d”:空}

我不明白的是什么是d,为什么它是空的?

2 个答案:

答案 0 :(得分:1)

shouldn't be manually serializing that JSON并写出来。如果您允许,ASP.NET将自动为您执行此操作:

[WebMethod(Description = "Gets the names matching part of a title.")]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public List<nameEntry> getNames() {
    List<nameEntry> nameList = new List<nameEntry>();

    nameList.Add(new nameEntry() {id="1", name="John"});
    nameList.Add(new nameEntry() { id = "3", name = "Alex" });

    return nameList;
}

问题是you need to call the service a particular way with jQuery以获取JSON响应而不是XML,特别是内容类型application/json的POST请求。

答案 1 :(得分:0)

为了安全起见,asp.net是否将返回数据包装在对象中?例如,你没有得到你认为的数组,而是在[“d”]属性下包含你的数组的对象{}。

我认为插件需要一个对象数组,因此您可能无法将url传递给tokeninput初始化程序。相反,在JSON请求的回调中,将数据输出并输入正确的形式(对象数组),然后使用该数组初始化tokeninput插件。