2008-11-25 53 views
4

我正在測試在asp.net mvc站點和WCF 3.5服務之間交換休息消息的基礎知識。 該服務使用在codeplex上找到的WCF REST入門工具包中找到的模板構建。 我想用jquery交換json消息。 REST Singleton服務工作正常,它還提供了在uri結尾添加幫助參數ad的所有可能調用示例。 我到達使用內置的jquery $ .getJSON執行GET請求。 我在做PUT(用於更新值)和POST時遇到問題。Jquery與WCF 3.5的休息通信

$.ajax({ 
    type: "PUT", 
    dataType: "json", 
    url: "http://localhost:1045/Service.svc/?format=json", 
    data: '{"Value":testvalue}' 
}); 

這是最好的方法是什麼?是否可以不使用Ajax女士,繞過它是否正確?

回答

4

「PUT」 和 「DELETE」 不被所有瀏覽器根據jQuery的

請求的類型,使( 「POST」 或 「GET」)的支持,默認是 「GET」。注意:其他 HTTP請求方法,例如PUT和 DELETE,也可以在這裏使用,但是 它們並不全部支持所有的 瀏覽器。

http://docs.jquery.com/Ajax/jQuery.ajax#options

我真的不明白你的問題雖然。你在做一個PUT和一個POST或只是一個POST有問題嗎? GET工作正常嗎?

我注意到的一個錯誤是您的數據,請注意我添加了它而沒有引號。

$.ajax({ 
    type: "PUT", 
    dataType: "json", 
    url: "http://localhost:1045/Service.svc/?format=json", 
    data: { Value: "testvalue" } 
}); 
+0

嗨,尼克,謝謝你糾正這個例子。 爲了澄清我的POST和PUT也使用正確的代碼這兩個方法返回一個ParseError ... – Ronnie 2008-11-25 14:52:35

5

另外,還要確保你有你的的contentType在你的Ajax調用正確設置。

contentType: "application/json"

jQuery的默認設置爲

contentType: "application/x-www-form-urlencoded"

0

的PUT和DELETE動詞並非所有的服務器上啓用。您需要將這些動詞放在X-HTTP-Method-Override標頭中。在請求被處理之前,瓦爾從頭部被取出並且取代正常的POST jsut。

jQuery jREST插件可以幫助你做到這一點。如果您使用的是WCF,則還需要實現RequestInterceptor(搜索XHttpMethodOverrideInterceptor以瞭解詳細信息)。