2011-08-15 15 views
27

Hala kafamı JQUERY, AJAX ve PHP'den kurtarmaya çalışıyorum.PHP, JSON'u JQUERY AJAX CALL'e geri döndürüyor

Artık PHP'yi çağırabilir, form öğelerini işleyebilir ve bir e-posta gönderebilirim, ancak AJAX’a dönüş işlemini gerçekleştiremiyorum. Ben her zaman error: seçiciyi aktif hale getiriyorum ve sözde JSON döndürülen listesini listelemeye çalıştığımda, bilgi aldım, bu açıkça yanlıştır. sözde JSON dönüş sözde JSON veri

readyState=4 
setRequestHeader=function (a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this} 
getAllResponseHeaders=function(){return s===2?n:null} 
getResponseHeader=function (a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c} 
overrideMimeType=function (a){s||(d.mimeType=a);return this} 
etc etc 

kimse aptal Ne hata ben yapmış olarak tavsiyelerde bulunabilir ise

ait

<?php 

touch('phpTouch.txt'); 
// process email 
$email=1; 
if ($email) { 
    $value = array('return' => 1, 'msg1' => 'Message sent OK, we will be in touch ASAP'); 
} else { 
    $value = array('return' => 0, 'msg1' => 'Message Failed, please try later'); 
} 
$output = $json->encode($value); 
echo $output; 

?> 

JavaScript ve AJAX

function submitForm(evt) { 
    $('#msgid').html('<h1>Submitting Form (External Routine)</h1>'); 
    if ($('#formEnquiry').valid()) { 
     $("#msgid").append("<h1>(Outside Ready) VALIDATED send to PHP</h1>"); 
      $.ajax({ 
      url: "ContactFormProcess3.php", 
      type: "POST", 
      data: $('#formEnquiry').serialize(), 
      dataType: "json", 
      success: function (data) { 
       alert("SUCCESS:"); 
       for(var key in data) { 
        $('#msgid').append(key); 
        $('#msgid').append('=' + data[key] + '<br />'); 
       } 
      }, 
      error: function (data) { 
       alert("ERROR: "); 
       for(var key in data) { 
        $('#msgid').append(key); 
        $('#msgid').append('=' + data[key] + '<br />'); 
       } 
      } 
     }); 
    } else { 
     $('#msgid').append('<h1>(Outside Ready) NOT VALIDATED</h1>'); 
    } 
    evt.preventDefault(); 
}; 

İlanı ile

PHP o zaman ben en minnettar olurdum.

+0

'json' nerede tanımlandı? Json_encode() işlevini kullanabilirsiniz; ' – Prisoner

+0

jQuery'nin hangi sürümünü kullanıyorsunuz? – marc

+0

@marc Sürüm 1.6.2, Google CDN'de – mcl

cevap

78

Sen PHP bu şekilde json dönebilirsiniz:

yankı cant kullanıcı iade ifade etmeden
header('Content-Type: application/json'); 
echo json_encode(array('foo' => 'bar')); 
+0

Bahşiş için teşekkürler. Denedim ve aynı sonucu alıyorum. Neden hata: her zaman idam ediliyor? – mcl

+0

bu, php komut dosyanızın bir hata döndürdüğü anlamına gelir – arnaud576875

+0

Çok teşekkürler. Şimdi neden anladın ve haklıydın. Şimdi sabit ve çalışıyor – mcl

1

bir json nesnesi dönmek ve ajax başarı yönteminde olduğu ayrıştırmak.