2016-05-29 17 views
5

Ajax işlevini çağırdığım yerden bir olayım var. Bu ajax fonksiyonundan bir dize geri dönmek istiyorum, Ama problem aynı zamanda başka fonksiyonlar olarak da adlandırılan ve bir miktar değer döndüren fonksiyon.ajax yanıtı nasıl temizlenir

Sorun, ajax adlı sayfa, her bir işlevden döndürülen tüm sokmaları döndürmesidir, yani Inherited.

Ajax Etkinlik:

$(".close_some").on("click", function(){ 
    $.get("close_some.php", { id : data_id, close_date_time : close_date_time }, function(response){ 
     console.log(response); 
     if(response === "success"){ 
      document.location.reload(true); 
     }else{ 
      alert('Some problem'); 
     } 
    }); 
}); 

close_some.php

$col = someFunction($id); //this function also called another function where a return statement works 
include_once "some_page.php"; 
echo 'success'; 

birFonksiyon() Şimdi

function someFunction($id){ 
    $sql = "SELECT `demo` FROM `some_problems` WHERE id = '$id'"; 
    ... 
    return departmentName($dept_id); 
} 

i t bakınız O uzun bir dize olan response ve sadece success'a ihtiyacım var diğer yanıtları nasıl kaldırabilirim ??

Teşekkürler.

+0

Gerçek sorununun ne olduğunu ve tam olarak ne yapmaya çalıştığınızı veya kodunuzun farklı bir şekilde yapması gereken şeyleri anlamak gerçekten çok zor. Yanıt olarak gördüğünüz dize "başarı" değil, ne içerdiğini göster – charlietfl

+0

Sadece geri dönüş değerine değil, yanıtıma yalnızca "başarı" ihtiyacım var. –

+0

Eh, "some_page.php"; 'da ne olduğu hakkında hiçbir fikrimiz yok. Görebildiğimiz tek şey "başarı" nın basit bir yankısıdır. Eğer bir php strin kullanımı için nadir olmayan bir estra whitepsce varsa ''() '' f Bazı fonksiyonlarda – charlietfl

cevap

4

Böyle output control functions kullanılarak some_page.php çıktısını bufferize edebilirsiniz: Size yankılanan yoksa bu arıyorsanız bazı işlevlerden akışları dönüyor gibi görünüyor

ob_start(); 
$col = someFunction($id); 
include_once "some_page.php"; 
ob_end_clean(); 
echo 'success'; 
+0

Bu benim için çalışıyor. –

+0

'ob_start' kullanmak zorunludur, yanıtlarım zaten tamponlanmış .. –

+0

Desteğiniz için teşekkürler. Benim için çalışıyor. –

1

. Değerleri/dizeleri doğrudan işlevlerden eklememelisiniz.

senin problemin çözümü ob_start ve ob_end_clean() işlevleri.

böylece kodunuz gibi görünecektir.

<?php 

ob_start(); 

$col = someFunction(....); //this function also called another function where a return statement works 
include_once "some_page.php"; 

ob_end_clean(); 
echo 'success'; 
+0

Destek için teşekkürler. –

+0

Bir şey değil. –

1

Onun mümkün değil ajax mağaza Buffer olarak değerini döndüğünü, daha iyi herhangi echo yoktur ya da değil, sana someFunction bazı yankı var eminim Fonksiyonlarınızı kontrol edin.

Çıktıyı arabellek olarak saklamak için ob_start()'u kullanıyoruz, kodunuzda olduğunu sanmıyorum.

İşlevinizde eko yoksa, echo "success";'dan önce ob_end_clean()'u kullanın.

Size en iyi şekilde bilgilendirici olan bazı cevaplar olduğunu düşünüyorum.

+0

kontrol edeyim ... –

+0

Evet, alt fonksiyonumda yankı var, destek için teşekkürler. –

+0

En iyisi, kodlamada iyi yolculuklar ... –