[英]How to embed HTML <tag> that is returned in JSON
簡而言之:
response
AJAX
調用的response
返回2個HTML
元素, script
和div
,它們以JSON
格式存儲。 response
的結構如下:
Object { script : "<script>...</script>", div : "<div></div>" }
response
包含我需要嵌入的JSON
對象。 我怎樣才能做到這一點? 我的代碼:
<body>
<script type=text/javascript>
$.ajax({
url: "my.url",
type: "GET",
datatype: "json",
contentType: "application/json; charset=utf-8",
success: function(response){
// Code that embeds script and div in to the body of the document
}
});
</script>
更詳細一點:
div
包含3個從script
元素引用的圖形。 它們都是從運行bokeh
的python
腳本返回的。 其他一切工作正常,我對HTML
和javascript
還是javascript
,這就是為什么我不知道如何將JSON
的標簽嵌入到html主體的原因。
謝謝您的幫助!
編輯:與這里不同,我正在詢問有關如何在沒有任何div參數的情況下將返回的JSON
嵌入AJAX
函數的特定幫助
您必須通過JSON.parse()函數將JSON解析為對象
<body>
<script type=text/javascript>
$.ajax({
url: "my.url",
type: "GET",
datatype: "json",
contentType: "application/json; charset=utf-8",
success: function(response){
// Parse to object
var object_response = JSON.parse(response);
// Access object like this
var response_script = object_response.script;
// And the second one the same way
var response_div = object_response.div;
// And then, for example, you can then append that div like this
$("body").append(response_div);
}
});
</script>
編輯已更改->至。 如下建議
第二次編輯,確實是在1種情況下不需要JSON.parse(),而是將標header('Content-type:application/json');
設置為正確的header('Content-type:application/json');
否則,注釋中建議的此技術將無法使用,您將必須使用JSON.parse()函數
使用“ jQuery.parseHTML()”將您的字符串解析為有效的DOM元素。 之后,您可以使用“ .append()”函數將其添加到您的身體中。
使用$("html body").append(
在頁面加載后在正文中添加javascript
function oldDivClicked(){ console.log("old Div Clicked"); } function changeDiv(){ $("#mydiv").html('<span onclick="newDivClicked()">New Div: apply newDivClicked()</span>'); $("html body").append('<script>function newDivClicked(){console.log("new Div Clicked");}<\\/script>'); }
<div id="body"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="mydiv"><span onclick="oldDivClicked()">Old Div: apply oldDivClicked() </span></div> <button onclick="changeDiv()">Get New Data</button> </div>
當頁面加載newDivClicked()
不存在時,當您單擊“ Get New Data
您也將能夠獲取newDivClicked()
。
動態腳本和div的示例包括:
var data = {
script: "<script type='text\/javascript' >alert('It works')<\/script>",
div: "<div class='info'>info<\/div>"
};
$('body').append(data.div);
$('head').append(data.script);
我的小提琴: https : //jsfiddle.net/8um4qe8h/1/
PS,我需要使用轉義字符來運行此示例,因此這就是數據看起來丑陋的原因
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.