Javascript jquery-从AJAX响应中分离JSON和HTML
我有一个类似这样的AJAX响应Javascript jquery-从AJAX响应中分离JSON和HTML,javascript,jquery,html,Javascript,Jquery,Html,我有一个类似这样的AJAX响应 [{"label":"label","label1":"67041","label2":"745","label3":"45191","label4":"11464"}]<table id="table"></table> [{“label”:“label”、“label1”:“67041”、“label2”:“745”、“label3”:“45191”、“label4”:“11”464"}] 它在响应中同时包含JSON和HTM
[{"label":"label","label1":"67041","label2":"745","label3":"45191","label4":"11464"}]<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":"11464"},'
+'{"label":"label2","label1":"0000","label2":"222","label3":"333","label4":"11333"}]'
+'<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": "11464",
"html": "<table id=\"table\"></table>"
}
]
[
{
“标签”:“标签”,
“标签1”:“67041”,
“label2”:“745”,
“label3”:“45191”,
“label4”:“11464",
“html”:”
}
]
虽然我建议您不要这样做,因为这会让人觉得很怪,而且很难维护,但您可以通过使用正则表达式检测JSON对象来解决id问题,如下所示:
var data = '[{"label":"label","label1":"67041","label2":"745","label3":"45191","label4":"11464"}]<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":"11464"}
//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');
})