JQuery dizi bilgi almak

5 Cevap php

Ben geri jQuery ajax çağrısından bir yanıt alıyorum sorun yaşıyorum ...

(Bu bir kullanıcının kimliğini doğrulamak için bir senaryo ve kendi adını ve kullanıcı kimliği dönmek gerekiyor. Benim anlayış JSON olarak kodlamak ve aşağıdaki formatta veri alabilir oldu.

It is returning an error of "undefined" for the alert().

The javascript

$.ajax({
 type: "POST",
 url: "myURL.php",
 data: {username: username, password: password},
 success: function(results) {
  //THIS IS WHERE THE PROBLEM IS
  alert('Hi '+results.name); //Should be "Hi Basil Fawlty"
  }
});

The PHP (myURL.php)

//This comes from a SQL call that returns the following name
json_encode(array(
 'id'=>1,
 'name'=>'Basil Fawlty'
));

Ben yanlış gidiyorum üzerinde herhangi bir yardım veya fikir büyük mutluluk duyacağız!

Teşekkürler.

Solution: çözüm dataType ekleyerek oldu.

5 Cevap

Sen kaçırıyorsun dataType: "json":

$.ajax({
 type: "POST",
 url: "myURL.php",
 dataType: "json",
 data: {username: username, password: password},
 success: function(results) {
  //THIS IS WHERE THE PROBLEM IS
  alert('Hi '+results.name); //Should be "Hi Basil Fawlty"
  }
});

Başka (daha az ayrıntılı) alternatif jQuery.getJSON Eğer JSON alıyorsanız biliyorum.

JQuery dataType: "json".

1.4 gibi, dataType varsayılan için:

Intelligent Guess (xml, json, script, or html)

Ama bu yanıt başlığı dize "json" içermesini gerektirir. Yani göndermek isteyeceksiniz:

header('Content-type: application/json');

DataType ile bu yeni eklenen esneklik işlemcileri birden döndü türlerine yanıt verir.

Sorun devam ederse, tüm yanıtı alert(results); aslında iade ediliyor ne görmek uyarmak isteyeceksiniz.

Burada benzer cevaplar çok. Bu başladı ama hiç şüphesiz kim yaptıysa kimin emin değil Polonya'yı işgal etti.

Bu gibi başarı yöntemi tepki nesneyi almak böylece JSON için dataType ayarlamak için emin olun:

$.ajax({
 type: "POST",
 url: "myURL.php",
 dataType: "json",
 data: {username: username, password: password},
 success: function(results) {
  alert('Hi '+results.name);
 }
});

Details for dataType burada bulabilirsiniz.

Seçenek olarak ise, you can do this,

$.getJSON( "myURL.php", {username: username, password: password}, 
  function(results) {
    alert('Hi '+results.name);
});

Benim tahminim JSON bekliyoruz ama bir dize elde olmasıdır.

Bunu gibi istek bir dataType belirtmeniz gerekir ya:

$.ajax({
 type: "POST",
 url: "myURL.php",
 data: {username: username, password: password},
 dataType: "json", 
 success: function(results) {
  //THIS IS WHERE THE PROBLEM IS
  alert('Hi '+results.name); //Should be "Hi Basil Fawlty"
  }
});

veya kullandığınız php gelen içerik türünü ayarlayabilirsiniz

header( "Content-Type: application/json" );