The following warnings occurred: | ||||||||||||
Warning [2] Undefined variable $unreadreports - Line: 26 - File: global.php(961) : eval()'d code PHP 8.2.28 (Linux)
|
![]() |
AJAX post bug - Printable Version +- UserSpice (https://userspice.com/forums) +-- Forum: Support Center (https://userspice.com/forums/forumdisplay.php?fid=23) +--- Forum: UserSpice 4.3 and Below (https://userspice.com/forums/forumdisplay.php?fid=26) +--- Thread: AJAX post bug (/showthread.php?tid=523) |
AJAX post bug - JUG - 04-12-2017 I have a situation where I post form to php parser via ajax call: Example $.post('parser.php', { post_var1:var1, post_var2:var }, function(data) { console.log("Response: "+data); }); then in the parser.php I submit this data to db. So I need to include init.php, header.php and securePage in the parser. Example <?php require_once $_SERVER['DOCUMENT_ROOT'].'/users/init.php'; require_once $abs_us_root.$us_url_root.'users/includes/header.php'; if (!securePage($_SERVER['PHP_SELF'])){die();} if($f_var1 = $_POST['post_var1'] ) $fields[var1] = $f_var1; if($f_var2 = $_POST['post_var2'] ) $fields[var2] = $f_var2; $success = $db->insert('devices',$fields); if(success) echo "1"; else echo "0"; ?> This should be pretty straight forward right? Well the problem is that when I get echo from parser.php, the console.log prints the whole header (users/includes/header.php) + my echo 0 or 1. I tryed to flush() and ob_flush() and then echo with no success. Problem occurs when I include header.php. If header.php is not included, the echo works OK. But then I'm stuck without DB class... I also searched header.php and not found any of the echo routines. Also header.php is still original userSpice. Also may I say that the header is echoed back regardless of what the parser.php is doing. Even if I comment out db->insert and $fields I'm stuck with that. But there is one more interesting thing. If I access parser.php directly, the echo does show correct. Only 0 is echoed back (or 1 if the db->insert is successful). Regards, Jakob AJAX post bug - karsen - 04-13-2017 If all you need is to open the connection from the database, instead of including header.php you can simply copy-paste the db code (and anything else you'd like) and it won't include the html. If you need any of the helper functions, you can still include_once those files (helpers.php and us_helpers.php) and you'll still be able to use the functions. As for your mystery, when you view parser.php directly it sounds like the html is still there but since there are no tags in your body it looks like only your 0 or 1 is shown. If you view the source code you'll probably still find the Code: <html><head></head><body> AJAX post bug - JUG - 04-18-2017 Thanks @karsen. DB class wasn't working if I only included helpers.php and us_helpers.php I get: PHP Fatal error: Call to a member function insert() on null in parser.php on line 10. However, after investigating header.php, I found that header.php does call ob_start() function at the begining, so I googled it and found that I can clean ob (output buffer) with ob_end_clean(). So I added last function after including header.php and echo now works perfectly! Thanks again! |