【问题标题】:How to read dynamic url from JSON file?如何从 JSON 文件中读取动态 url?
【发布时间】:2016-04-01 14:40:56
【问题描述】:

我有一个 .json 文件(见下文),其中包含路径和项目名称等变量的图像 URL。

{"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 属性如下:$('.gatewayImg').attr('src', resrcPath+_global_PROJECT_NAME+'/images/gateway-'+_global_PROJECT_NAME+'.png'); 时,图像出现并且变量被正确的值替换。

我不知道我的 JSON 是否有效,我需要知道如何为 src 分配 json 值,而不是在属性函数中写入 URL。

【问题讨论】:

  • 图像中的变量显然没有被替换,因为它们显示在您的源代码中,请执行字符串替换来处理这些变量 - 或者更好的是在 JSON 中编译完整的 URL。跨度>
  • 我需要这些变量,因为 URL 以便图像会根据它们而变化。

标签: javascript jquery json ajax


【解决方案1】:

您的 JSON 是有效的,但您有一个需要执行(评估)的字符串。如果您对 JSON 文件有 100% 的控制权,则可以评估字符串,假设您将 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));
     }
 });

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 2021-06-11
    相关资源
    最近更新 更多