2016-03-29 22 views
0

Veri göndermeden sonra ajax'ımın echo'yu bir php dosyasından görüntülemesini istiyorum. Veriyi bir veritabanına gönderiyorum ve gönderi başarılı olduğunda, "Tamamlandı" yı ekleyebilmeyi isterim. İşlenen php dosyasından hangi mesajı aldığımı belirlemek için gönderiden aldığım sonucu kullanıyorum. Gönderdiğim anda verileri ekliyor ama ajax komutumdaki verilerin 'Tamamlandı' şeklindeki yansımalarını görmek için bir uyarı eklediğimde, bunun yerine oluşturduğum tablonun html kodunu ve 'Tamamla' sözcüğünü aldım. alt. 'Durum parametresinde' olmasını isterim.Jquery ajax php echo sonucunu göstermiyor

Ajax Senaryo

$.ajax({ 
      type: "POST", 
      data: $('#frm').serialize(), 
      url: "create_submitted.php?", 
      cache:false, 
      success: function (status) { 
         alert(status); 
         location.reload(); 
       } 
      }); 

Php Script

session_start(); 
require_once("database.php"); 
require_once("class.php"); 
$reg = new SUBMITTED(); 
$reg->month = $_POST["month_s"]; 
$reg->year = rtrim($_POST["year_s"]); 
$reg->month_year = $reg->year."-".date('m',strtotime($_POST["month_s"]))."-00"; 
$reg->user_fk = $_SESSION['franchise_code']; 
$reg->create(); 
echo json_encode("Complete"); 
+3

"location.reload();" verdiğinizde, sayfayı yeniden yükler. LoL. –

+0

comment 'datatype: 'json' 'sonra deneyin .. –

+0

Ve evet,' datatype:' json ', 'kaldırın. –

cevap

0

bu deneyin:

$.ajax({ 
type: "POST", 
data: $('#frm').serialize(), 
url: "create_submitted.php?", 
cache:false, 
success: function (status) { 
    alert(status);  
}}); 

Sen sayfayı komut nedeniyle location.reload(); Ayrıca başarılı oldu her zaman yeniden edildi datatype: 'json', Gerek yok.

+0

ve ne işe yarıyor? – Jai

+0

@Jai güncellenen yanıt. – GrumpyCrouton

1

location.reload'u kaldırın, bunun yerine yalnızca gerekli html parçasını (örneğin, verinin gideceği bir div veya başka bir öğe) güncelleyebilirsiniz. Açıklamalarla belirtilen gibi js üzerinde datatype:json kaldırmak gerekmez, ancak json iade edilecek bekliyoruz, sizinle php tekabül başlığı ayarlamak gerekir: böylece

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

jQuery Yanıt, varsayılan olarak "text/plain" veya "text/html" şeklindeki farklı bir içerik türü başlığıyla göz ardı edilmeyecektir.

Sen ile HTML güncelleyebilirsiniz

: jQuery

$("#targetElement").html("my html code"); 

veya olmadan:

document.querySelector("#targetElement").innerHtml("my html code"); 

Ayrıca ben çok aksi takdirde için kendinizi kuruyorsanız, kendi php komut bazı doğrulama yapmak tavsiye XSS, birisi gönderdiği verilere kötü bir <script> etiketi eklediğinde saldırır (alınan girdiyi php yüzüne htmlentities(__input_goes_here__) aracılığıyla geçirerek önleyebilirsinizGÜNCELLEME: Sayfadaki herhangi bir şey yazdırılmadan önce başlığı php olarak ayarlamanız gerektiğini belirtmeyi unutmayınız. Göreceğiniz here Eğer başarı geri arama kontrol Ayrıca

, bu başarıdır 3 parametre alabilir:

Type: Function(Anything data, String textStatus, jqXHR jqXHR) 

burada: veriler sunucudan dönen

  • data olduğunu
  • textStatus, sunucudan döndürülen durum bilgisidir (404, 200 vb)
  • jqXHR jq dosyasıdır. aramayı yapan uery nesnesi.

Şu anda yalnızca bir parametreyi kabul ediyorsunuz, ancak her üçü de console.log numaralı telefonu kullanmanızı tavsiye ediyorum; böylece yanlış giden şeyleri hissedebilirsiniz.

Yardımcı olur :)

+0

Bu işe yaramaz mıyım Bunu php dosyasında konum ekledim location.reload ve bu sefer hiçbir şey uyarılmadı – Taps101

+0

@TapuwaSimonMundeta bir şey basılmadan önce üstbilgiyi php olarak ayarlamanız gerekiyor aksi halde "üstbilgileri" zaten "başlık gönderdi. Yanıtı buna uygun olarak günceller – ddrjm