2013-02-28 4 views
5

Bazı bilgileri (POST gibi: page.aspx?var1=value .... aracılığıyla) göndermek için bir POST çağrısı yapmak için jQuery $.ajax kullanmak istiyorum.jQuery POST İsteği - dönen JSON

Ayrıca jQuery'nin bir JSON nesnesini geri alabilmem için hizmetin JSON döndürdüğünü işlemesini istiyorum.

var data = {name: _name, ...}; 

var request = $.ajax({ 
    url: url, 
    type: "post", 
    data: data, 
    //dataType: "json" 
}); 

En kısa zamanda bana istek üzerine bir parseError olsun JSON nesnesi almaya olanak veren dataType: "json" kullandıkça!

Bunun için bana yardımcı olabilirsiniz!

ADVACE'DE TEŞEKKÜRLER!

+0

Alacağınız tam hata nedir? –

+0

İstekte "Content-Type: application/json" gibi bir başlık belirleyebilir ve jQuery, ne elde ettiğini kendiliğinden öğrenecektir. – Merec

+1

Ayrıştırma hatası alıyorsanız, büyük olasılıkla JSON'unuzun geçersiz olduğu anlamına gelir. Döndüğünüz JSON dizesini yapıştırabilir misiniz? Muhtemelen sözdizimi bir yerlerde kırılmış. – Lev

cevap

0

serveride komut dosyanızın kodlanmış json'u döndürdüğünden emin olun.

Php kullanımında json_encode().

echo json_encode($response); 

da $.ajax çağrısında dataType : 'json' ayarlayın.

+1

Kutsal saçmalık! Sizler hızlıca korkuyorsunuz! Bunun için teşekkürler! – Nik

+0

doğru yolu, üstbilgiyi POST dosyanıza 'header (' Content-type: application/json '); '...Bu, sunucuyu json olarak tanıması için zorlar. Bu noktada 'dataType: json' için gerek yok. – PlantTheIdea

+0

@ user2118781 iyi ya da aynı şekilde yardımcı olur ... daha fazla yardım için bana bildirin .. –

0

İlk olarak istek, URL'den sonra eklenmiş parametrelere sahip değil. Belirttiğiniz biçim GET isteği içindir. Eğer

echo json_encode($response); 

gibi JSON biçiminde verileri yapmak zorunda istenen url itibaren

$.post(
'/yourURLL', 
{'data' : dataJson}, 
function(data){ 
    handleIncomingJSON(data); 
}).error(function(data, textStatus){handleUnsuccessfulSave(data, textStatus)}); 
8

ve sonra başarı fonksiyonu gibi bu yanıtı JSON alacak: Aşağıdaki ile aynı hedefe ulaşabilirsiniz Bu:

 $.ajax({ 
      type:"POST", 
      url: "your_url", 
      data:data, 
      success: function (response){ 
       var arr = $.parseJSON(response); 

      } 
     }); 
+2

Kendi deneyimlerimde, ayrıştırmak için jQuery kitaplığını kullanmak yerine tarayıcıların yerel JSON ayrıştırıcısını çağırırken en iyi sonuçları aldım. Tüm modern tarayıcılar artık bu yöntemi destekleyerek tarayıcılar arası uyumluluk için daha iyi bir yöntem haline getiriyor. 'var arr = JSON.parse (yanıt);' – Epiphany

0

jQuery $.post documentation gereğince, ben çok tüm önemli geri arama yöntemlerini uygulamak tavsiye (done, fail, always) başlangıçta o kadar o zaman gizli alamadım JSON yanıtıyla hataları olsaydı:

var jqxhr = $.post( 
    "example.php", 
    function(response) {var arr = JSON.parse(response);}, 
    'json' 
) 
.done(function() {console.log("second success");}) 
.fail(function() {console.log("error");}) 
.always(function() {console.log("finished");});