我使用javascript从网址获取html内容。我按照以下代码进行操作:
function getContentHTML(theUrl) {
$.ajax({
url: theUrl,
crossDomain: true,
success: function (data) {
$("#divcontent").html(data);
}
});
}
如果网址是英文(例如:bbc.com,voa.com ....),它会没问题,但是如果网址包含特殊字符,我就无法获得内容。我怎么能解决?你可以在我的网址中测试。
答案 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.