在jQuery中显示JSON响应中的特定值
我有以下ajax功能:在jQuery中显示JSON响应中的特定值,jquery,json,parsing,jquery-filter,Jquery,Json,Parsing,Jquery Filter,我有以下ajax功能: jQuery.ajax({ method: "PUT", dataType: 'json', callback: null, url: urlLocation, data: saveImage, success: function(response){ $(".response").html(JSON.stringify(response, null, ' ').replace(/\n/g,
jQuery.ajax({
method: "PUT",
dataType: 'json',
callback: null,
url: urlLocation,
data: saveImage,
success: function(response){
$(".response").html(JSON.stringify(response, null, ' ').replace(/\n/g, '<br>'));
$(".response").css('font-family', 'Knowledge');
},
error: function (data) {
$(".share-link").html("<div class='alert alert-danger'><p>Couldn't send photo: <b>"+ imageid.value + "</b></p></div>");
}
});
我需要解析出值
SQUARE
、纵向
和横向
及其关联的uri
和方向
值。然后我需要能够将uri
包装在img
标记中。到目前为止,我只能给出JSON结构,但不确定如何过滤掉所需的特定字段。如果不使用内联函数,代码会变得更清晰。让我们为success分配一个函数句柄:
jQuery.ajax({
...
dataType: "json",
success: myJSONsuccess;
...
});
因此必须有一个名为“myJSONsuccess”的函数:
在将其添加到标记之前,需要进行更多处理。记住,这些不是HTML,而是JSON,当您在响应上调用parseJSON时,您将拥有javascript对象而不是HTML元素。你想要的更像
var obj = $.parseJSON(response.responseText);
for (var property in obj.entity.entries) {
if (obj.entity.entries.hasOwnProperty(property)) {
$(".response").append($("<img alt='test' src='" + obj.entity.entries[property].uri + "'/>"));
}
}
var obj=$.parseJSON(response.responseText);
for(obj.entity.entries中的var属性){
if(对象实体条目hasOwnProperty(属性)){
$(“.response”).append($(“”);
}
}
以及您可能希望添加到响应中的任何其他内容
您可以向添加的每个映像添加一个id,然后在将其附加到响应div之前检查它是否已经存在,或者您可以查看src值,看看它是否重复。JSON.parse然后像任何javascript一样访问它object@jfin3204您能否说明如何在success函数中实现循环遍历条目并查找/显示
方向
和关联的uri
?我尝试了var obj=$.parseJSON(响应); $(“.response”).html(obj.entity.entries)代码>,但这不起作用。休伯特的答案会起作用。或者您可以尝试$.parseJSON(response.responseText),我知道它返回的是JSON,而不是HTML元素。我不确定的是如何在我现有的代码中实现.parseJSON
,并能够打印出结果实体:@Matt Well看着你的小提琴你使用了错误的选择器,“.response”正在查找一个类而不是id。基本上,您希望循环实体的entries数组,然后使用返回的数据构建所需的html元素。因此,上面的代码循环并使用uri作为src属性创建一个图像,然后将该值附加到具有响应类的所有元素。我的实际代码具有正确的类,这只是我设置的示例中的一个输入错误。通过在我的代码中放置for循环,它实际上破坏了应用程序@Matt您缺少成功的结束括号。这将破坏应用程序:。我遗漏了什么,让它无法正常运行?
var myJSONsuccess = function (JSONobj, StatusString, jqXHR) {
//you probably will not need StatusString and jqXHR, so ignore them
//There is no need to parse JSONobj. It is already parsed because of
//dataType: "json"
//in your ajax-command
//This is SQUARE:
var squ = JSONobj.entity.entries.SQUARE;
//This is one of its properties:
var orient = JSONobj.entity.entries.SQUARE.orientation;
//alternatively you can write:
var orient = squ.orientation;
//this is exactly the same
};
var obj = $.parseJSON(response.responseText);
for (var property in obj.entity.entries) {
if (obj.entity.entries.hasOwnProperty(property)) {
$(".response").append($("<img alt='test' src='" + obj.entity.entries[property].uri + "'/>"));
}
}