jQuery在一个非常大的字符串中提取一个json子字符串

时间:2014-11-28 12:50:11

标签: javascript jquery json

我有一个ajax字符串响应如下:

<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 \/>"}

但更大。我想在$.parseJSON jQuery方法中使用它来提取json对象(你可以在最后一行看到它,但它并不总是在字符串的底部)。

有人可以帮我实现吗?

3 个答案:

答案 0 :(得分:0)

使用此正则表达式查找标记中的任何位置。

var regex = '^\{\".*?\"\}';

答案 1 :(得分:0)

解决问题的方法不止一种。要了解根本原因(如果您不想确保在使用它们之前确实设置了变量),可以使用以下两个选项之一:

-

找到您的php.ini文件并按以下方式更新error_reporting设置:

error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR

Answer by binfalse from this thread

-

如果要禁用每页,请修改您正在访问的PHP文件,并将此行包含在<?php ?>标记顶部(C:\wamp\www\form.php文件内)的某处:< / p>

error_reporting( error_reporting() & ~E_NOTICE );

Accepted answer from this thread

答案 2 :(得分:0)

我会使用这个正则表达式:/(\{\".*?:.*?\"\})/ 这将为您提供匹配组中的json。

在这里演示:http://regex101.com/r/cV7oK7/1

像这样使用:

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