jQuery gönderme JSON


194

Güncelleme: var valueSunucuya geçmek istiyorum

merhaba, aynı eski, aynı eski ... :)

Adlı bir form <form id="testForm" action="javascript:test()">ve adlı bir kod alanı var<code id="testArea"></code>

Bu kodu stringize ve kod alanındaki verileri görüntülemek için kullanıyorum:

var formData = form2object('testForm');
document.getElementById('testArea').innerHTML = JSON.stringify(formData, null, '\t');
var value = JSON.stringify(formData, null, '\t');

İstediğim bu verileri bir JSON dosyasına göndermek. Bu proje üzerinde çalışıyorum: http://ridegrab.com/profile_old/ ve Submit Querydüğmeye basarsanız sayfanın başının dolduğunu göreceksiniz.

Ayrıca veri göndermek için bu komut dosyasını kullanmak istiyorum:

    function authenticate(userName, password) {
    $.ajax
    ({
        type: "POST",
        //the url where you want to sent the userName and password to
        url: 'username:password@link to the server/update',
        dataType: 'json',
        async: false,
        //json object to sent to the authentication url
        data: '{"userName": "' + userName + '", "password" : "' + password + '"}',
        success: function () {

        alert("Thanks!"); 
        }
    })
}

Yine, tüm istediğim sunucuya bu JSON verilerini gönderebilmektir. Sunucum update or POSTveriler doğru yerde ayarlanmış .


ben işe :) i sunucuya bu veri göndermek için onları bir araya koymak nasıl bilmiyorum ... ben yerine bile yapamaz dataile data: value,... !! ??
Patrioticcow

İlk olarak, bunun bir bağlantı sorunu olmadığından emin misiniz? Bir errorişlev atarsanız , çağrılır mı? Varsa, hangi hatayla?
Wiseguy

1
Bir yıldan daha eski olmasına rağmen, @ Patrioticcow'un bunu nasıl yapacağına dair en son sorusunu cevaplayacağım. Ajax yöntemine gönderdiğiniz "başarılı" seçeneğini görüyor musunuz? Aynı şeyi "error" ile yapın. "Hata: MyErrorHandlingFunction" veya "hata: işlev (hata) {[Kod burada
işlenirken

Yanıtlar:


220

'data', dizgi oluşturulmuş bir JavaScript nesnesi olmalıdır:

data: JSON.stringify({ "userName": userName, "password" : password })

Göndermek için şu formDataadrese iletin stringify:

data: JSON.stringify(formData)

Bazı sunucular ayrıca application/jsoniçerik türünü de gerektirir :

contentType: 'application/json'

Burada da benzer bir sorunun daha ayrıntılı bir cevabı var: Jquery Ajax json'u web servisine gönderme


@tasos Bence bu senin peşinde olduğun şey: stackoverflow.com/questions/5806971/…
Kyle Wild

Burada yanlışlığı yankılamak; bu basit senaryolar için uygun olacaktır, ancak url kodlu mesaj özellikle sorunlu diziler için çok sorunlu olabilir.
FMM

@FMM ve Jonas N - Doğruluk cevabımı nasıl güncelleyeceğimi anlamama yardımcı olabilir misiniz? JQuery belgelerindeki örnekler (burada: api.jquery.com/jQuery.post ), bir JS nesnesi veya bir dize gönderebilirmişsiniz gibi görünmesini sağlar; .
Kyle Wild

Patrioticcow dedi ki: "ben var değerinden json göndermek istiyorum" Değer bir dizi veya bir nesne olmadığı sürece bu geçerli JSON değildir.
andsens

1
Veri içerdiğinde, örneğin, şeylerin bir listesini ne olur düşünün: { foo: [1,2,3], bar: 'baz' }. Bu form olarak kodlanır foo%5B%5D=1&foo%5B%5D=2&foo%5B%5D=3&bar=baz(çıkışsız, öyle foo[]=1&foo[]=2&foo[]=3&bar=baz). Muhtemelen ne sunucu tarafı istediğiniz.
FMM

271

JSON bunu böyle gönderiyorsunuz

$.ajax(url, {
    data : JSON.stringify(myJSObject),
    contentType : 'application/json',
    type : 'POST',
    ...

bir nesneyi settings.data olarak iletirseniz jQuery nesneyi sorgu parametrelerine dönüştürür ve varsayılan olarak application / x-www-form-urlencoded veri türüyle gönderir; charset = UTF-8, muhtemelen istediğiniz şey değil


@ TimLovell-Smith, jQuery datahiçbir durumda bir karakter dizisini işlemeyeceği için bir fark yaratmayacak
Phil

2

Bu yayın isteğini bir etki alanına gönderiyorsanız, bu bağlantıyı kontrol etmelisiniz.

https://stackoverflow.com/a/1320708/969984

Sunucunuz siteler arası gönderi isteğini kabul etmiyor. Bu nedenle, siteler arası isteklere izin vermek için sunucu yapılandırmasının değiştirilmesi gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.