Php 在Ajax调用中查找并替换url

Php 在Ajax调用中查找并替换url,php,jquery,ajax,get,Php,Jquery,Ajax,Get,我正在做ajaxget来获取跨浏览器数据,在本例中是从cnn.com: $(function(){ var site = 'http://cnn.com/'; $.get('proxy.php', { site:site }, function(data){ $(data).find('a').attr('href', function(_, href){ return href.replace(/\/\/[^\/]+/, '//cnn.co

我正在做
ajaxget
来获取跨浏览器数据,在本例中是从cnn.com:

   $(function(){

    var site = 'http://cnn.com/';

    $.get('proxy.php', { site:site }, function(data){

    $(data).find('a').attr('href', function(_, href){
         return href.replace(/\/\/[^\/]+/, '//cnn.com')
    }); 

    $('#result').append(data);


    }, 'html');

    });
正如您所看到的,有一段代码能够用“cnn.com”替换url的一部分,这是必要的,因为url路径通常附加到我的网站域。 问题是replace函数似乎不起作用。我在控制台中没有收到任何错误,所以我怀疑我必须将代码放在其他地方。另一种可能是代码找不到
a
,因为Ajax加载数据的过程没有完成。我试着用一个事件来修复它,但没有成功。 为了让函数找到并替换它,我必须在代码中更改什么


ps我知道有一段proxy.php代码,但我更愿意在浏览器端(javascript/jquery)执行此操作。

您正在创建一个jquery对象,操作元素,但没有附加该元素,最后,
数据保持不变,请尝试以下操作:

$(data).find('a').attr('href', function(_, href){
     return href.replace(/\/\/[^\/]+/, '//cnn.com')
}).end().appendTo('#result');

使用
attr
,您可能只会得到一个相对(或部分)URL,它根本不包含主机。试试
prop
相反,它应该会给你一个完整的URL。我的建议和undefined的建议应该可以一起使用。我在控制台中得到了这一点:Uncaught TypeError:无法调用undefinedI的方法“replace”,这是在假定将
html
作为参数传递会使jQuery解析响应的情况下实现的。编辑:我错了:““html”:以纯文本形式返回html;插入DOM时会计算包含的脚本标记。”@Youss这意味着
a
元素没有
href
属性?非常感谢:)也感谢@Felix Kling,使用此代码的prop完成了这项工作。