जब मेरे पास यह कोड है
$.ajax({
type: 'POST',
//contentType: "application/json",
url: 'http://localhost:16329/Hello',
data: { name: 'norm' },
dataType: 'json'
});
Fiddler में मैं कच्चे अनुरोध के बाद देख सकता हूं
POST http://localhost:16329/Hello HTTP/1.1
Host: localhost:16329
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost:14693/WebSite1/index.html
Content-Length: 9
Origin: http://localhost:14693
Pragma: no-cache
Cache-Control: no-cache
name=norm
लेकिन मैं जो कोशिश कर रहा हूं वह एप्लिकेशन / x-www-www-form-urlencoded से एप्लिकेशन / json तक सामग्री-प्रकार सेट करने के लिए है । लेकिन यह कोड
$.ajax({
type: "POST",
contentType: "application/json",
url: 'http://localhost:16329/Hello',
data: { name: 'norm' },
dataType: "json"
});
विचित्र अनुरोध उत्पन्न करता है (जिसे मैं फिडलर में देख सकता हूं)
OPTIONS http://localhost:16329/Hello HTTP/1.1
Host: localhost:16329
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Origin: http://localhost:14693
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Pragma: no-cache
Cache-Control: no-cache
ऐसा क्यों है? जब वहाँ POST होना चाहिए तो विकल्प क्या है? और मेरा कंटेंट-टाइप एप्लीकेशन / जसन के लिए कहाँ सेट है? और अनुरोध पैरामीटर किसी कारण से चले गए हैं।
अद्यतन १
सर्वर की ओर मैं वास्तव में सरल सेवा है।
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class RestfulService : IRestfulService
{
[WebInvoke(
Method = "POST",
UriTemplate = "Hello",
ResponseFormat = WebMessageFormat.Json)]
public string HelloWorld(string name)
{
return "hello, " + name;
}
}
लेकिन किसी कारण से मैं इस पद्धति को मापदंडों के साथ नहीं कह सकता।
अद्यतन २
इतने लंबे समय तक जवाब न देने के लिए क्षमा करें।
मैंने अपने सर्वर की प्रतिक्रिया में इन शीर्षकों को जोड़ा है
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: POST, GET, OPTIONS
यह मदद नहीं की, मेरे पास सर्वर से त्रुटि की अनुमति नहीं है।
यहाँ मेरे फिडलर का कहना है
इसलिए, अब मैं यह सुनिश्चित कर सकता हूं कि मेरा सर्वर POST, GET, OPTIONS स्वीकार करता है (यदि रिस्पॉन्स हेडर काम करता है जैसे मुझे उम्मीद है)। लेकिन "विधि की अनुमति नहीं है" क्यों?
सर्वर से WebView प्रतिक्रिया में (आप ऊपर चित्र पर रॉ की प्रतिक्रिया देख सकते हैं ) ऐसा दिखता है