Bu jQuery hata, ya da ben bir şey eksik?

3 Cevap php

Ben bir AJAX web uygulamasında jquery-1.3.2 kullanıyorum. Ben sunucu istekleri göndermek için jQuery ajax $.post() yöntemi kullanın.

Sunucuda I json_encode cevap daha sonra bir dizi oluşturmak için php kullanarak ve duyuyorum. Sonra istemci ben yanıtı işlemek AJAX sonrası yöntemin geri arama işlevini kullanın.

Ben sunucuya değişkenler göndermek için $.post() yöntemi kullanmak kadar tüm iyi çalışıyor. Ben sunucu değişkenleri gönderirseniz, ben geri almak yanıt [object Object] ve bu yüzden ben bunu ayrıştırmak kuramıyorum. Ben değişkenleri gönderirken ben bir HTML yanıt isteyin ve sonra ben bu ayrıştırma çevresinde şu anda bir iş var.

Yani benim sitesinden alınan yer kodu:

Jax çağrı:

$.post("inc/sendfeedback.php", {NAME: name,TYPE: type,EMAIL: email,COMMENT: comment}, function(data) {PostData(data);}, "json");

Yani PostData kod şöyle görünür:

function ProcessData(data)
{
    //alert(data);
    var jo = eval("(" + data + ")");
    if(jo.result == "true")
    {
    	if(jo.data != "" && jo.element != "")
    	{
    		$(jo.element).html(jo.data);
    	}
    }

    SMessage(jo.error);
}

İçinde var olan ben yukarıdaki kodu uyarısı yorumsuz [object Object].

Ben çağrısından Mesaj değişkenleri kaldırmak eğer iyi çalışır.

Sunucu kodu şöyle:

$arr = array ("result" => $result,"data" => $data,"error" => $error,"element" => $element);
echo(json_encode($arr));

Bu jQuery kütüphanesi ile bir hata olduğunu, bunu ancak onun hala orada mevcuttu 1.2 sürümü ile denediniz mi? Ben de jQuery siteyi arama ve bu sorunu olan kimseyi bulamıyorum.

Yani ben bir şey eksik varsayalım. Ama ne?

3 Cevap

$.ajax({
      url: "script.php",
      global: false,
      type: "POST",
      data: {NAME: name,TYPE: type,EMAIL: email,COMMENT: comment},
      dataType: "json",
      contentType: "application/json",
      success: function(data){
         alert(data.result);
      }
   }

Eval gerek yok, jQuery başarı geri arama çağırmadan önce onu ayrıştırır / evals.

eval = saf kötülük

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

Eğer bir ilişkisel PHP dizi kullanarak çünkü, json_encode bir Javascript nesnesi bir dize temsilini ve bir JavaScript dizisi değil dönecektir. Ancak, yine de bir dizi benzer şekilde işlemek gerekir:

for (var key in data)
{
    var item = data[key];
}

Ben kuvvetle Firefox + Kundakçı addon indirmek tavsiye ve sunucu tarafından iade ediliyor ne damping / hata ayıklama için console API kullanmak istiyorsunuz.

Ben kayıtlı beri ve şimdi itibar etmeden bu konuya içine yorum açamazsınız ve benim gibi bu soruyu iddia herhangi bir kolay yöntem göremiyorum.

Sapkın, $ kullanarak sizin öneri. Ajax () yöntemi çalıştı. Benim için işe yaramadı nedeni ilk kez sunucu kodu POST verileri bekliyordum ben bir JSON nesnesi olarak sonrası verileri teslim oldu.

Yani doğru sunucu komut dosyası aramak için benim javascript sabit ve her şey tam olması gerektiği gibi çalışıyor.

Yani sonuç olduğunu $. Sonrası () yöntemi içinde bir hata var. Ben onu takip değil ama satır 3633 sonrası yöntemi çağrısı yapar edildi olduğunu. Ancak henüz sorunu bulamadım kazmaya başladı.

Ben aslında bu hak $. Ajax () aynı sunucu komut dosyası ve aynı javascript yanıtı işler ve tüm eserler, $. Sonrası yöntem kullanımı ve benim komut dosyası bile dönüş nesnesi üzerinden dönüş ile başarısız gibi görünüyor geçerli bir JSON nesnesi.

Yardım çocuklar için teşekkürler. Şimdi git ve tüm $ kaldırmak. $ Için çağrı göndermek. Ajax çağrıları.

Bütün bu sonucu www.pygames.net görülebilir

Cheers Shane a.k.a FrogSkin