【发布时间】:2015-12-23 05:30:52
【问题描述】:
我正在尝试通过我网页上的ajax 请求加载外部网页的内容(特定部分)。
请求的curl url如下
所以,我尝试了以下 ajax 调用来获取网页
var username,password;
$.ajax
({
type: "GET",
url: "http://X.X.X.X:PORT/",
dataType: 'text/html',
async: false,
crossDomain: true,
data: '{"username": "username", "password" : "secret"}',
success: function (){
alert('Thanks for your comment!');
},
error: function (err){
alert(err);
},
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password));
}
});
这给了我一个CORS 错误 (Cross-Origin Request Blocked:)。将dataType 从text/html 更改为jsonp 之后。我收到了以下错误的响应
[异常...“失败”nsresult:“0x80004005 (NS_ERROR_FAILURE)”位置:“JS 框架 ::https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js::.send :: line 5”数据:无]
在这两种情况下,ajax 调用的成功部分都不会被执行。只有它进入错误部分。如果我收到了页面,则可以通过以下方法获取特定部分。
var data = $.parseHTML(res); //<----try with $.parseHTML().
$(data).find('div.content').each(function(){
$('#here').append($(this).html());
如何得到所需的结果?
在@GuRu 的建议下,我尝试了以下方法,但仍然没有调用成功方法。
var username,password;
$.ajax({
type: "GET",
url: "http://X.X.X.X:PORT/",
data: '{"username": "user", "password" : "secret"}',
async:true,
dataType : 'jsonp',
crossDomain:true,
success: function (){
alert('Thanks for your comment!');
},
beforeSend: function( xhr ) {
xhr.overrideMimeType( "text/plain; charset=x-user-defined" );
xhr.setRequestHeader ("Authorization", "Basic " + btoa(username + ":" + password));
}
});
【问题讨论】:
-
尝试将“Content-Type”标头改为
"text/javascript",而不是text/html -
@ParthTrivedi 我在
dataType中尝试了“text/javascript”,但仍然是同样的错误。 -
你试过
application/javascript -
@ParthTrivedi 是的,这也给出了
data:no的相同例外 -
你现在遇到了什么错误。
标签: javascript jquery html ajax