Olamaz 'application/json' bir WordPress kullanmak için-içerik türü ayarlayın.ajax
Bu kod var
$.ajax({
type: 'POST',
//contentType: "application/json",
url: 'http://localhost:16329/Hello',
data: { name: 'norm' },
dataType: 'json'
});
Fiddler raw isteği üzerine görebiliyorum
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
Ama çalışıyorum ne tip içerik ayarlamaktırapplication/x-www-form-urlencodediçinapplication/json. Ama bu kod
$.ajax({
type: "POST",
contentType: "application/json",
url: 'http://localhost:16329/Hello',
data: { name: 'norm' },
dataType: "json"
});
Oluşturur tuhaf istek Kemancı olarak görüyorum
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
Bu yüzden mi? YAZI orada olması gereken SEÇENEKLER nelerdir? Ve uygulama/içerik-türü benim json mi? Ve istek parametreleri nedense gitti.
GÜNCELLEME 1
Sunucu tarafında çok basit Dinlendirici bir hizmeti var.
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class RestfulService : IRestfulService
{
[WebInvoke(
Method = "POST",
UriTemplate = "Hello",
ResponseFormat = WebMessageFormat.Json)]
public string HelloWorld(string name)
{
return "hello, " name;
}
}
Ama nedense parametreleri ile bu yöntem diyemem.
GÜNCELLEME 2
Bu kadar uzun cevap vermediğim için özür dilerim.
Benim sunucu yanıt için bu başlıkları ekledim
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: POST, GET, OPTIONS
Ben yardım etmediYöntem yapılamazsunucu hatası.
Kemancım ne diyor burada

Şimdi benim server kabul ettiğinden emin olabilirimPOST, GET, SEÇENEKLEReğer yanıt başlıkları beklediğim gibi çalışırlar. Ama neden "Yöntemi izin verilmez"?
Sunucudan yanıt (bkz . web görünümü içinde ^em>Hamyukarıdaki resim üzerinde yanıt bu gibi görünüyor

CEVAP
Url seçeneği http:// kaldırma doğru HTTP POST Başlığı gönderildiği sağlar gibi görünüyor.
Ben tam ana bilgisayar adını hak kazanmak için gereken, sadece aşağıdaki gibi göreli bir URL kullanabilirsiniz düşünüyorum.
$.ajax({
type: "POST",
contentType: "application/json",
url: '/Hello',
data: { name: 'norm' },
dataType: "json"
});
Çalışan benim için bir örnek:
$.ajax({
type: "POST",
url: siteRoot "api/SpaceGame/AddPlayer",
async: false,
data: JSON.stringify({ Name: playersShip.name, Credits: playersShip.credits }),
contentType: "application/json",
complete: function (data) {
console.log(data);
wait = false;
}
});
Muhtemelen ilgili: jQuery $.ajax(), $.post sending "OPTIONS" as REQUEST_METHOD in Firefox
Düzenleme: Biraz daha araştırma yaptıktan sonra SEÇENEKLER başlığı ise, kaynak etki alanından talep etmiş olup olmadığını öğrenmek için kullanılır öğrendim. Fiddler kullanarak, yanıtı şu benim sunucudan başlıklarını ekledim.
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: POST, GET, OPTIONS
Tarayıcı bu yanıtı aldıktan sonra daha sonra json veri ile doğru POST isteği gönderdi. Varsayılan içerik türü güvenli olarak kabul edilir-urlencoded formu gibi görünüyor ve bu yüzden ekstra çapraz etki alanı denetler tabi değildir.
Sunucularınız için daha önce de belirttiğim başlıkları SEÇENEKLER isteğine yanıt eklemek gerekir gibi görünüyor. Elbette onları belirli alanlar isteklerini yerine tüm izin verecek şekilde yapılandırmanız gerekir.
Aşağıdaki jQuery bunu test etmek için kullandım.
$.ajax({
type: "POST",
url: "http://myDomain.com/path/AddPlayer",
data: JSON.stringify({
Name: "Test",
Credits: 0
}),
//contentType: "application/json",
dataType: 'json',
complete: function(data) {
$("content").html(data);
}
});​
Referanslar:

parsererror bir WordPress kullanmak so...
Nasıl bir WordPress kullanmak yapmadan...
Javascript/JSON veri ile posta yoluyla...
AJAX Başarı JSON sonuç üzerinde bir Wo...
Ne "İçerik türü: application / js...