0

我从 Ajax 调用中获得了数据。在服务器端,我将字符串编码为 JSON 并发送数据。但我得到的数据如下

"
General abc\/def<\/h3>
dsaa<\/td>  3<\/table><\/tbody>
dfsa<\/td>  3<\/table><\/tbody>
dsdsa<\/td> 2<\/table><\/tbody><\/div>"

实际上它不应该显示 html 字符。

我使用 Php 和 Jquery ajax。我在哪里犯了错误?

更新代码

function employee_deatils_search() {

    global $wpdb;

    $name=$_POST['user_name'];//retrive data from post array on form submitting

    //main streams for a given user will be printed such a way that subjects are gruped by main stream.The order of the main streams are arranged according
    //to the total of skill levels for each subject.
    $stream_groupby=$wpdb->get_results("SELECT tab_subject.mai_stream, SUM( tab_skilllist.skill_level ) AS total_skill
                                FROM  `tab_users` 
                                JOIN tab_skilllist ON tab_skilllist.user_id = tab_users.id
                                JOIN tab_subject ON tab_subject.id = tab_skilllist.subject_id
                                WHERE tab_users.first_name =  '$name' and tab_users.employ = 1
                                GROUP BY tab_subject.mai_stream
                                ORDER BY total_skill DESC");
    //echo "<div id='accordion'>";
    foreach($stream_groupby as $value_str){                             


    //printing subject information, skill level and subject main stream. 
    //user name and main stream will be passed as arguments.
    $employee_subjects=$wpdb->get_results("SELECT  tab_subject.subject, tab_subject.mai_stream ,tab_skilllist.skill_level   FROM  `tab_users` 
                                JOIN tab_skilllist ON tab_skilllist.user_id = tab_users.id
                                JOIN tab_subject ON tab_subject.id = tab_skilllist.subject_id
                                WHERE tab_users.first_name =  '$name' and tab_subject.mai_stream = '$value_str->mai_stream'
                                ORDER BY   tab_skilllist.skill_level desc");
            //echo '<br>';
            $jason  =  '<h3 style="font-size:15px;">';
            $jason .=  $value_str->mai_stream;
            $jason .=  '</h3>';
            $jason .=   '<div  >';
        foreach($employee_subjects as $key=> $value){

            $jason .=   '<table><tbody>';
            $jason .=   '<tr><td style="width:90%;font-size:14px;">'.$value->subject.'</td>'.'<td style="font-size:14px;">'.$value->skill_level;'</td></tr>';
            $jason .=   '</table></tbody>';
            // echo '</br>';echo '</br>';

        }
            $jason .=  '</div>';
    }
//  echo json_encode($jason) ;

    //echo '</div>';
    //wp_reset_query();
    die();
} // end theme_custom_handler

这是javascript代码

$("#sendemp").click(function(e) {
        e.preventDefault();
        var submit_val = $("#searchbox").val();
        //alert('submitval is ' + submit_val);


        $.ajax( {
            type : "POST",

            url : "./wp-admin/admin-ajax.php",
            data : {
                action : 'employee_deatils_search',
                user_name : submit_val
            },
            success : function(data) {
            //      alert('hhh');
                $('#accordion32').html(data);
                $("tr:odd").css("background-color", "#F8F8F8");
                // $( "#searchbox" ).autocomplete({
                // source: data
                // });

            }
        });

    });
4

1 回答 1

1

JSON 旨在由 JavaScript 解析,但许多浏览器(尤其是旧浏览器)使用</“脚本块结束”标记(与较新的浏览器相反,后者足够聪明,可以查找</script>不在字符串中的标记) .

\转义/,它本身没有真正的目的(因为没有\/特殊含义,只是/在解析时变成),但它确实分解了</以允许 JSON 工作。

于 2013-07-16T13:39:48.017 回答