我有一个使用Jquery $ .ajax的页面来获取另一个页面的html代码。 这是它的样子:
<html><head>
<script language="JavaScript" type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
$(function(){
$.ajax({
url:another_page_url,
async:false,
dataType:"text",
success:function(doc){
//do something with $(doc)
//e.g. alert($(doc).find('img').attr('src'));}
});
});
//-->
</script>
</head>
<body>
<pre id="result" style="word-wrap: break-word; white-space: pre-wrap;"></pre>
</body></html>
another_page_url是一个包含大量图片的网页:
<img src="http://ww3.sinaimg.cn/mw600/50cdeb22jw1e2a35t0w8ag.gif">
问题是当我在成功加载后调用$(doc)(等于$ .parseHTML(doc))时,Jquery启动ajax获取请求以加载doc中包含的所有图像。我的问题是如何防止这种自动加载的事情?我只想要图片网址字符串而不是这些真实图片。
P.S。如果我设置dataType =“xml”会出现一个prase错误。(似乎我要加载的页面不是xml兼容的,我无法更改它。)设置dataType =“html”等于调用$(doc这导致我遇到同样的情况。
感谢您的帮助。
答案 0 :(得分:4)
谢谢大家。我的问题解决了这样:
$.ajax({
url:url,
async:false,
dataType:"text",
success:function(doc){
var new_doc = doc.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match, capture) {return "<img no_load_src=\"" +capture+ "\" />";});
parse_function(new_doc);
},
error:function(jqXHR, textStatus, errorThrown){ alert(textStatus); }
});
解决这个问题只需两步:
答案 1 :(得分:0)
每当您发出加载html数据的请求时,也始终将其视为html。 因此,如果您希望将html作为字符串,则需要将&lt; 替换为&amp; lt ,将&gt; 替换为&amp; gt
请参考以下内容:
success:function(doc){
// create dynamic temporary div
var div = $("<div />" , { id : 'temp-container' });
// appned reposne html into div
$(div).html(doc);
var img_url = $(div).find('img').attr('src');
// check firebug console
console.log(img_url);
}
您可以找到任何属性。没有必要将顶部附加到体内。
希望它适合你。
祝你好运