如何从JSON文件中读取动态URL?

时间:2016-04-01 14:40:57

标签: javascript jquery json ajax

我有一个.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。

1 个答案:

答案 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));
     }
 });

最好的解决方案是在服务器上处理字符串,这样您就不需要在客户端上再次评估它并在程序中打开漏洞。