Javascript jquery-从AJAX响应中分离JSON和HTML

Javascript jquery-从AJAX响应中分离JSON和HTML,javascript,jquery,html,Javascript,Jquery,Html,我有一个类似这样的AJAX响应 [{"label":"label","label1":"67041","label2":"745","label3":"45191","label4":"11‌​464"}]<table id="table"></table> [{“label”:“label”、“label1”:“67041”、“label2”:“745”、“label3”:“45191”、“label4”:“11”‌​464"}] 它在响应中同时包含JSON和HTM

我有一个类似这样的AJAX响应

[{"label":"label","label1":"67041","label2":"745","label3":"45191","label4":"11‌​464"}]<table id="table"></table>
[{“label”:“label”、“label1”:“67041”、“label2”:“745”、“label3”:“45191”、“label4”:“11”‌​464"}]
它在响应中同时包含JSON和HTML

我想把这两件事分开

并将JSON用于我创建的图表函数

然后将该表附加到
div

任何建议都会很有成效


提前感谢。

在php中

$array = 'Your json array';
$html = 'Your html codes';
使用两个键创建单个数组 Jquery中的

DataType: 'JSON',
success:function(response){

response.json = 'This is your json';
response.html = 'This is your html';
// assuming you keep receiving this
var data = 
   '[{"label":"label","label1":"67041","label2":"745","label3":"45191","label4":"11‌464"},'
  +'{"label":"label2","label1":"0000","label2":"222","label3":"333","label4":"11‌333"}]'
  +'<table id="table"></table>';

// parse the data with regex
var json_pattr = /\[.*\]/g;
var json_str = json_pattr.exec(data)[0];
var json_data = eval( '(' + json_str + ')') ;

var html_pattr = /\}\].*/g;
var html_text = html_pattr.exec(data)[0];
var html_data = html_text.substr(2);

//json_data = [object] {"label":"label","label1": ...
//html_data = [text] <table id="table"></table>   ...

// then use jquery templates to render it
var data = json_data;
$('body').append(html_data);
$('#trTemplate').tmpl(data).appendTo('#table'); 
<script id="trTemplate" type="text/x-jquery-tmpl">
   <tr>
        <td>${label}</td>
        <td>${label1}</td>
        <td>${label2}</td>
        <td>${label3}</td>
        <td>${label4}</td>
    </tr>
</script>

}

HTML
添加到
JSON
响应中,并像使用其他值一样使用它(确保转义HTML)。还可以使用以确保您的
JSON
有效

[
    {
        "label": "label",
        "label1": "67041",
        "label2": "745",
        "label3": "45191",
        "label4": "11‌​464",
        "html": "<table id=\"table\"></table>"
    }
]
[
{
“标签”:“标签”,
“标签1”:“67041”,
“label2”:“745”,
“label3”:“45191”,
“label4”:“11‌​464",
“html”:”
}
]

虽然我建议您不要这样做,因为这会让人觉得很怪,而且很难维护,但您可以通过使用正则表达式检测JSON对象来解决id问题,如下所示:

var data = '[{"label":"label","label1":"67041","label2":"745","label3":"45191","label4":"11‌464"}]<table  id="table"></table>';

var json_pattr = /\[.*\]/g;
var json_str = json_pattr.exec(data)[0];
var json_data = eval( '(' + json_str.substr(1, json_str.length-2) + ')') ;

var html_pattr = /\}\].*/g;
var html_text = html_pattr.exec(data)[0];
var html_data = html_text.substr(2);

//json_data = [object]   {"label":"label","label1":"67041","label2":"745","label3":"45191","label4":"11‌464"}
//html_data = [text] <table id="table"></table>
这里有一个工作示例供您测试

请注意,当您有多个{json对象时,它是如何工作的,它会在表中创建更多行:)}

如果您只使用jquery模板,并且现在假设您可以实际修改输出,那么最好的做法是:

新的JavaScript版本的代码,在“数据”上只包含模板,不包含HTML

$.json('http://server.com/url/service/someservice.something', function(data){
    $('body').append(<table id="#table></table>");
    $('#trTemplate').tmpl(data).appendTo('#table'); 
})
$.json('http://server.com/url/service/someservice.something,函数(数据){

$('body').append(将
HTML
添加到
JSON
响应中。它位于JSON的末尾。它是组合的。你能更改JSON返回的内容吗?更改的意思吗?请说清楚。我是这些东西的新手。实际上不是专家。@unknown用户也许我的答案可以帮助你快速完成你想要的事情;)。我不知道如何将它分开。你能告诉我吗?@UnknownUser要从这个响应中获取
html
键,你需要执行
response[0]。html
我如何转换这个{“label”:“label”,“label1”:“67041”,“label2”:“745”,“label3”:“45191”,“label4”:“11?”‌‌​​464“}到这样的JSON数据[{“label”:“label”,“label1”:“67041”,“label2”:“745”,“label3”:“45191”,“label4”:“11”‌​‌​464“}”?它确实帮了我的忙。我可以附加
html
。但是当我打印JSON时,我得到的是[Object][Object]。这会导致图表出错。我需要谷歌搜索如何将对象转换为数组。如果可以,请帮助我,并感谢您的回复。+1:)我得到这个输出
{“label”:“label”,“label1”:“67041”,“label2”:“745”,“label3”:“45191”,“label4”:“11”‌​464“}
。它没有用方括号括起来,并且在图表中没有被识别为JSON数据。u传递给JSON_encode()的是什么类型的数组;第一个是数据库查询的结果。第二个HTML将该数据传递给HTML表。现在,我用
[]手动将该数据括起来
这个。它确实有效。但我希望使用jquery本身来完成。而不是通过连接。我如何转换这个
{“label”:“label”,“label1”:“67041”,“label2”:“745”,“label3”:“45191”,“label4”:“11”‌​464“}
到这样的JSON数据
[{“label”:“label”,“label1”:“67041”,“label2”:“745”,“label3”:“45191”,“label4”:“11”‌​464“}]
#table, td{ border:1px solid #000; padding:5px; }
$.json('http://server.com/url/service/someservice.something', function(data){
    $('body').append(<table id="#table></table>");
    $('#trTemplate').tmpl(data).appendTo('#table'); 
})