I have an event from where i call an Ajax function. From that ajax function i want to return a string, But the problem is that function also called some other functions and return some value.
The problem is the ajax called page return the whole sting that is returned from each and every functions, i mean Inherited.
Ajax Event:
$(".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);
}
Now when i see at the response
its a long string, but i need only the success
how can i remove other responses??
Thanks in Advance.
You can bufferize output of some_page.php
using output control functions like this:
ob_start();
$col = someFunction($id);
include_once "some_page.php";
ob_end_clean();
echo 'success';
It seems you are echoing or returning streams from some functions you are calling from this one. You shouldn't echo values / strings directly from functions.
The solution for your problem is ob_start
and ob_end_clean()
functions.
so your code will look like.
<?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';
Its not possible that ajax store returned value as Buffer
, You better check your functions is there any echo
or not, I am sure you have some echo in the someFunction
.
We use the ob_start()
to store the output as buffer, i don't think you do it in your code.
If your function has no echo then simply use ob_end_clean()
before the echo "success";
.
I think there are some answers which is informative to you, all the best.