2011-08-01 94 views
0

我寫在我的網站下面的web服務ASMX文件:問題與jQuery Tokeninput和asp.net web服務

[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"}] 

哪一個是正確的應答,當我使用它作爲一個本地輸入的結果是好的,但是當我調用web服務中tokeninput的輸入方法(I分配一個錯誤消息發送到函數)我得到以下錯誤:「200 parsererror undefined」

任何人都可以幫我弄明白嗎?

感謝

多倫

編輯:用jQuery代碼玩弄後一點我設法接收數據,但我得到了以下錯誤:

parsererror

[{「id」:「1」,「name」:「aaA」},{「id」:「3」,「name」:「aaA」}] {「d」:null}

我不明白的是d是什麼,爲什麼它是空的?

+0

當我在tokeninput的輸入法中調用webservice時,有什麼意思? –

+0

從運行jQuery的html:

+0

您嘗試調用此webservice的Web頁面是否也託管在localhost:61965上,還是位於單獨的應用程序中? –

回答

0

不是asp.net將對象中的返回數據包裝爲安全嗎?例如,你沒有找回你認爲是你的數組,而是在[「d」]屬性下包含你的數組的對象{}。

我認爲插件需要一個對象數組,因此您可能無法將該url傳遞給tokeninput初始值設定項。相反,在JSON請求的回調中,將數據取出並轉換爲正確的形式(一個對象數組),然後使用該數組初始化tokeninput插件。

+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; 
} 

美中不足的是,爲了得到一個JSON響應,而不是XML,特別是與內容類型application/json的POST請求you need to call the service a particular way with jQuery

+0

由於某些原因,這是以xml格式輸出數據eventhough它說響應格式的json –

+0

你需要確保你的POST請求的內容類型設置爲application/json,如果這個插件不允許你直接指定,你可以使用$ .ajaxSetup ()在插件運行前全局設置這些選項。 –