为什么我不能替换这些传入的JSON图像的URL?

时间:2013-07-24 04:07:13

标签: javascript jquery json

所以我有这个JS代码从php文件中提取JSON。这样可行。我要做的是在将JSON值放入DOM之前更改JSON值,以用低分辨率图像替换图像URL。您将在IF语句中看到调用 mobile()函数

的开头

我们走了:

$.post(url, project, function(data, textStatus) {
  $(data.tags).each(function(i, item){
    projectTags += "<span class='project-tag'>"+item+"</span>";
  });

  $(data.slides).each(function(i, item){

    if ((mobile() == true && $(window).width() <= 680)){
      if (i != 0){
        console.log('Before' +item);
        var newItem = JSON.stringify(item);
        $(newItem).replace('.png','-lofi.png');
        console.log(newItem);

        console.log('After' + item);
      }
    }

    projectImages += "<div class=\"slide-container\">" + item + "</div>";
    console.log(projectImages);
  });
  setTimeout(function(){
    btnAbout.removeClass('active');
    sectionDetail
      .attr('data-id', data.id)
      .find('.project-name').html(data.name).end()
      .find('.project-year').html(data.year).end()
      .find('.project-agency').html(data.agency).end()
      .find('.project-details').html(data.details).end()
      .find('.project-tags').html(projectTags).end()
      .find('#slideshow').html(projectImages);
}, "json");

是什么给出的?如果它是一个小于iPad的移动设备,我想要做的就是替换JSON值的URL。

编辑:由James修正!谢谢哥们儿!以下最终法典。

$.post(url, project, function(data, textStatus) {
  $(data.tags).each(function(i, item){
    projectTags += "<span class='project-tag'>"+item+"</span>";
  });

  $(data.slides).each(function(i, item){
    var loFi = JSON.stringify(item);
    if ((mobile() == true && $(window).width() <= 680)){
      if (i != 0){
        loFi = loFi.replace(/(.png)/g,'-lofi.png')
        loFi = $.parseJSON(loFi);
        item = loFi;
      }
    }
    projectImages += "<div class=\"slide-container\">" + item + "</div>";

  });
  setTimeout(function(){
    btnAbout.removeClass('active');
    sectionDetail
      .attr('data-id', data.id)
      .find('.project-name').html(data.name).end()
      .find('.project-year').html(data.year).end()
      .find('.project-agency').html(data.agency).end()
      .find('.project-details').html(data.details).end()
      .find('.project-tags').html(projectTags).end()
      .find('#slideshow').html(projectImages);
}, "json");

2 个答案:

答案 0 :(得分:2)

应该是:

var newItem = JSON.stringify(item);
newItem = newItem.replace('.png','-lofi.png');

您忘记将'replace'的结果赋给变量,而不需要在$(..)中包装newItem,replace是一个String对象函数。

PS。您可能也不需要stringify。你的物品不是一个字符串吗?

答案 1 :(得分:1)

$(data.slides).each(function(i, item){

var newItem = JSON.stringify(item);  <-- Add this early

if ((mobile() == true && $(window).width() <= 680)){
  if (i != 0){
    console.log('Before' +item);
    newItem = newItem.replace(/(.png)/g,'-lofi.png');
    console.log(newItem);

    console.log('After' + item);
  }
}

您还在这里添加常规项目吗?您对项目所做的任何更改都不会反映出来。

projectImages += "<div class=\"slide-container\">" + item + "</div>";

更改为

projectImages += "<div class=\"slide-container\">" + newItem + "</div>";