0

I got an ajax string respond like the following:

<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index:  in C:\wamp\www\form.php on line <i>464</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0008</td><td bgcolor='#eeeeec' align='right'>274560</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\Example\wp-admin\admin-ajax.php' bgcolor='#eeeeec'>..\admin-ajax.php<b>:</b>0</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.8826</td><td bgcolor='#eeeeec' align='right'>38298888</td><td bgcolor='#eeeeec'>do_action(  )</td><td title='C:\wamp\www\Example\wp-admin\admin-ajax.php' bgcolor='#eeeeec'>..\admin-ajax.php<b>:</b>85</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>0.8827</td><td bgcolor='#eeeeec' align='right'>38300392</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.call-user-func-array:{C:\wamp\www\Example\wp-includes\plugin.php:505}' target='_new'>call_user_func_array:{C:\wamp\www\Example\wp-includes\plugin.php:505}</a>
        (  )</td><td title='C:\wamp\www\Example\wp-includes\plugin.php' bgcolor='#eeeeec'>..\plugin.php<b>:</b>505</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>4</td><td bgcolor='#eeeeec' align='center'>0.8827</td><td bgcolor='#eeeeec' align='right'>38300560</td><td bgcolor='#eeeeec'>Example_Post->ajax_Example_posting_form(  )</td><td title='C:\wamp\www\Example\wp-includes\plugin.php' bgcolor='#eeeeec'>..\plugin.php<b>:</b>505</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>5</td><td bgcolor='#eeeeec' align='center'>0.8827</td><td bgcolor='#eeeeec' align='right'>38301552</td><td bgcolor='#eeeeec'>Example_Post->Example_form_submitting(  )</td><td title='C:\wamp\www\form.php' bgcolor='#eeeeec'>..\Example-frontend-form.php<b>:</b>116</td></tr>
</table></font>
<br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined index: name in C:\wamp\www\form.php on line <i>475</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0008</td><td bgcolor='#eeeeec' align='right'>274560</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\Example\wp-admin\admin-ajax.php' bgcolor='#eeeeec'>..\admin-ajax.php<b>:</b>0</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.8826</td><td bgcolor='#eeeeec' align='right'>38298888</td><td bgcolor='#eeeeec'>do_action(  )</td><td title='C:\wamp\www\Example\wp-admin\admin-ajax.php' bgcolor='#eeeeec'>..\admin-ajax.php<b>:</b>85</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>0.8827</td><td bgcolor='#eeeeec' align='right'>38300392</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.call-user-func-array:{C:\wamp\www\Example\wp-includes\plugin.php:505}' target='_new'>call_user_func_array:{C:\wamp\www\Example\wp-includes\plugin.php:505}</a>
        (  )</td><td title='C:\wamp\www\Example\wp-includes\plugin.php' bgcolor='#eeeeec'>..\plugin.php<b>:</b>505</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>4</td><td bgcolor='#eeeeec' align='center'>0.8827</td><td bgcolor='#eeeeec' align='right'>38300560</td><td bgcolor='#eeeeec'>Example_Post->ajax_Example_posting_form(  )</td><td title='C:\wamp\www\Example\wp-includes\plugin.php' bgcolor='#eeeeec'>..\plugin.php<b>:</b>505</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>5</td><td bgcolor='#eeeeec' align='center'>0.8827</td><td bgcolor='#eeeeec' align='right'>38301552</td><td bgcolor='#eeeeec'>Example_Post->Example_form_submitting(  )</td><td title='C:\wamp\www\form.php' bgcolor='#eeeeec'>..\Example-frontend-form.php<b>:</b>116</td></tr>
</table></font>
{"redirect_to":"false","show_message":true,"message":"<div class=\"notification alert-success\"><p>Post updated successfully<\/p><a href=\"#\" class=\"close-btn\">\u00d7<\/a><\/div><br \/>"}

But much bigger. I want to extract the json object (you can see it at the last lines, but it is not always at the bottom of the string) to use it in $.parseJSON jQuery method.

Can anyone help me to achieve that please?

Engr.MTH
  • 1,002
  • 1
  • 11
  • 23

3 Answers3

0

Use this regex to find anywhere in tags .

var regex = '^\{\".*?\"\}';
Dimag Kharab
  • 4,439
  • 1
  • 24
  • 45
  • I would upvote this but there is a better solution which will take care of the underlying issue that the OP is attempting to resolve. – Jonathan Gray Nov 28 '14 at 12:58
0

There is more than one way to solve your issue. To get to the underlying cause (if you don't want to make sure your variables are actually set before using them), one of these two options are available:

--

Find your php.ini file and update your error_reporting setting as-follows:

error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR

Answer by binfalse from this thread

--

If you want to disable per-page then modify the PHP file you're accessing and include this line somewhere at the top inside of the <?php ?> tags (inside of your C:\wamp\www\form.php file):

error_reporting( error_reporting() & ~E_NOTICE );

Accepted answer from this thread

Community
  • 1
  • 1
Jonathan Gray
  • 2,509
  • 15
  • 20
  • If I used this code are the errors and notices logged to the error log? – Engr.MTH Nov 28 '14 at 13:19
  • @Engr.MTH I don't believe so but I would recommend checking yourself if you want to be certain. – Jonathan Gray Nov 28 '14 at 13:20
  • Thank you so much your code did it great and solved everything, And yes the errors and notices logged to the error log. – Engr.MTH Nov 28 '14 at 13:24
  • @Engr.MTH I should have probably also mentioned that the first method sets which exceptions you would like to have reported and the second one sets which ones you don't want to have reported. Only E_NOTICE warnings will be forcefully suppressed using the second option. Fatal errors will still behave normally. Also, thanks for reporting back with specific logging behavior :) – Jonathan Gray Nov 28 '14 at 13:47
0

I would use this regex: /(\{\".*?:.*?\"\})/ This will give you the json in a matched group.

Demo here: http://regex101.com/r/cV7oK7/1

Use like so:

var regx = /(\{\".*?:.*?\"\})/g,
    match = "";
while (match = regex.exec(yourString) !== null) {
    var json = $.parseJSON(match[0]);
    //use the json
}
AlexanderBrevig
  • 1,967
  • 12
  • 17