2016-05-29 14 views
5

Ho un evento da cui chiamo una funzione Ajax. Da quella funzione ajax voglio restituire una stringa, ma il problema è che la funzione chiama anche alcune altre funzioni e restituisce un valore.Come cancellare la risposta ajax

Il problema è che la pagina chiamata ajax restituisce l'intero elemento che viene restituito da ciascuna funzione, cioè Inherited.

Ajax evento:

$(".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'; 

someFunction()

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

Ora, quando vedo in t he response è una lunga stringa, ma ho bisogno solo del success come posso rimuovere altre risposte ??

Grazie in anticipo.

+0

Avere davvero difficoltà a capire qual è il tuo vero problema e che cosa stai cercando di fare esattamente o che cosa deve fare il tuo codice in modo diverso. Se la stringa che vedi in risposta non è '" successo "' mostra cosa contiene – charlietfl

+0

Ho bisogno solo di 'successo' per la mia risposta, non altro valore restituito. –

+0

Beh, non abbiamo idea di cosa sia in "" some_page.php ";'. Tutto ciò che possiamo vedere è una semplice eco di "successo". se c'è estra whitepsce che non è raro per un php strin usare 'trim()' in successo – charlietfl

risposta

4

È possibile bufferize uscita del some_page.php usando output control functions come questo:

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

Questo è un lavoro per me. –

+0

È necessario utilizzare 'ob_start', le mie risposte sono già memorizzate nel buffer .. –

+0

Grazie per il supporto. Per me funziona. –

1

Sembra che si sta facendo eco o di ritorno da flussi di alcune funzioni che si sta chiamando da questo. Non dovresti echo valori/stringhe direttamente dalle funzioni.

La soluzione per il vostro problema è ob_start e ob_end_clean() funzioni.

quindi il tuo codice sarà simile.

<?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

Grazie per il supporto. –

+0

Prego. –

1

La sua non è possibile che negozio ajax restituito valore come Buffer, È meglio controllare le funzioni c'è qualche echo o no, sono sicuro di avere qualche eco nel someFunction.

Utilizziamo lo ob_start() per memorizzare l'output come buffer, non penso che lo facciate nel vostro codice.

Se la funzione non ha eco, utilizzare semplicemente ob_end_clean() prima dello echo "success";.

Penso che ci siano alcune risposte che sono informative, tutto il meglio.

+0

fammi controllare ... –

+0

Sì, ho un eco nella mia sottofunzione, Grazie per il supporto. –

+0

Tutto il meglio, buon viaggio nella programmazione ... –