无法在javascript中获取包含特殊字符网址的内容?

时间:2014-08-02 04:50:23

标签: javascript jquery

我使用javascript从网址获取html内容。我按照以下代码进行操作:

function getContentHTML(theUrl) {
    $.ajax({
        url: theUrl,
        crossDomain: true,
        success: function (data) {
            $("#divcontent").html(data);
        }
    });
}

如果网址是英文(例如:bbc.com,voa.com ....),它会没问题,但是如果网址包含特殊字符,我就无法获得内容。我怎么能解决?你可以在我的网址中测试。

网址:https://tw.news.yahoo.com/%E7%A9%BA%E9%9B%A3%E8%BB%8D%E6%96%B9%E5%A4%A7%E6%94%B9%E5%8F%A3-%E7%A2%BA%E5%AF%A6%E6%9C%89%E4%BB%8B%E5%85%A5%E8%88%AA%E7%AE%A1-120050818.html

3 个答案:

答案 0 :(得分:1)

网址中不允许使用特殊字符。您需要对特殊字符进行编码。使用javascript中提供的encodeURI函数。查看rfc 1738了解更多详情。

答案 1 :(得分:0)

尝试此功能来解码网址:

  var uri_dec = decodeURIComponent(encodedUrl);

 var uri_dec = decodeURI(encodedUrl);

答案 2 :(得分:0)

这是因为url已编码,浏览器会自动在网址中添加一些字符代替特殊字符,例如代替插入space in url %20

所以你必须编码解码网址,在链接中非常清楚地解释:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent

var encodeduri=https://tw.news.yahoo.com/%E7%A9%BA%E9%9B%A3%E8%BB%8D%E6%96%B9%E5%A4%A7%E6%94%B9%E5%8F%A3-%E7%A2%BA%E5%AF%A6%E6%9C%89%E4%BB%8B%E5%85%A5%E8%88%AA%E7%AE%A1-120050818.html

 var uri_decoded = decodeURIComponent(encodeduri);  //The decodeURIComponent() function decodes a URI component.

 OR

 var uri_decoded = decodeURI(encodeduri);  //The decodeURI() function is used to decode a URI.