我有一个.json文件(见下文),图片网址包含路径和项目名称等变量。
{"imgs":[
{
"gatewayImg": "resrcPath+_global_PROJECT_NAME+'/images/gateway-'+_global_PROJECT_NAME+'.png'"
}
]}
我也有加载文件的ajax请求,并且在我的请求成功时,我将属性src和源路径分配给图像。
$.ajax({
async: false,
type: "GET",
global: false,
dataType: "json",
url: resrcPath+"imgRes.json",
success: function (data) {
var src = data.imgs[0].gatewayImg;
$('.gatewayImg').attr('src', src);
}
});
问题在于,当我这样做时,在本地服务器上找不到图像,我将此localhost:8080/order/resrcPath+_global_PROJECT_NAME+'/images/gateway-'+_global_PROJECT_NAME+'.png'
作为src。
但是当我将src归因于:$('.gatewayImg').attr('src', resrcPath+_global_PROJECT_NAME+'/images/gateway-'+_global_PROJECT_NAME+'.png');
时,图像显示出来,变量很好地被正确的值替换。
我不知道我的JSON是否有效,我需要知道如何使用json值分配src而不是在属性函数中写入URL。
答案 0 :(得分:2)
您的JSON有效,但您有一个需要执行(评估)的字符串。如果你有100%控制JSON文件,你可以评估字符串,假设你有resrcPath,_global_PROJECT_NAME
作为全局变量。
var resrcPath = "/";
var _global_PROJECT_NAME = "global"
eval("resrcPath+_global_PROJECT_NAME+'/images/gateway-'+_global_PROJECT_NAME+'.png'")
=== "/global/images/gateway-global.png"
$.ajax({
async: false,
type: "GET",
global: false,
dataType: "json",
url: resrcPath+"imgRes.json",
success: function (data) {
var src = data.imgs[0].gatewayImg;
$('.gatewayImg').attr('src', eval(src));
}
});
最好的解决方案是在服务器上处理字符串,这样您就不需要在客户端上再次评估它并在程序中打开漏洞。