XMLHttpRequest可以从http:// mydomain.com/向http:// mydomain.com:81/发送请求吗?
我需要使用foursquare API来搜索场地.当然它是跨域的.
它在Firefox中没有任何问题,但在Internet Explorer中(7,8,9我测试过).
我的javascript代码如下:
searchVenues: function(searchQuery) {
$.ajax({
url: 'https://api.foursquare.com/v2/venues/search',
data: {
sw: bound_south_west,
ne: bound_north_east,
query: searchQuery.query,
oauth_token: FSQ_OAUTH_TOKEN,
limit: 25,
intent: 'browse',
v: 20120206
},
cache: false,
dataType: 'json',
success: function(data) {
displayResults(data, searchQuery.query);
},
error: function(xhr, status, errorThrown) {
console.log(errorThrown+'\n'+status+'\n'+xhr.statusText);
}
});
}
Run Code Online (Sandbox Code Playgroud)
在Firefox中,它可以完美地显示接收的数据.在Internet Explorer中,它在控制台上登录:
No Transport
Error
Error
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我使用以下代码从JSON中获取数据.
$(document).ready(function()
{
$.getJSON("http://www.example.com/data.php?id=113&out=json", function(data) {
$.each(data.issue.page, function(i,item) {
imagesJSON[i] = item["@attributes"];
});
alert(imagesJSON.length);
});
});
Run Code Online (Sandbox Code Playgroud)
它适用于Mozilla,chrome和其他浏览器,但不适用于IE.(不在任何版本中).
我正在制作一个标准的JQuery .ajax调用,已经跳过了箍以使其在其他浏览器中运行但现在我只是停留在IE9上(而且更低,我确定).页面canada.example.com/registration包含一个注册表单,使用JQuery的.ajax提交:
jQuery.ajax({
url: 'http://canada.example.com/registration.php',
type: 'POST'
});
Run Code Online (Sandbox Code Playgroud)
请注意,POST请求是http://canada.example.com/registration.php,因此我不会发出跨站点请求.
这现在可以在Firefox和Chrome中使用,但IE9会返回"无传输"错误,就像它没有尝试发出请求一样.有想法该怎么解决这个吗?我已经花了一些力气尝试使这不是一个跨源请求,但IE 9似乎仍然认为它是.
我只是在IE中遇到一个HTTPS Ajax调用的问题.IE似乎认为我正在提出跨域请求,但我不是.从页面调用以下代码https://mydomain/customer_profile.php:
$.ajax({
type: 'post',
url: 'https://mydomain/ajax/retrieve_transaction_details.php',
data: /* my data is here */,
success: function(response){
// do something with the response
},
error: function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
}
});
Run Code Online (Sandbox Code Playgroud)
除IE之外,此请求在每个浏览器中都能正常工作.在IE中,错误函数返回"错误:访问被拒绝".就像我说的那样,我对此完全感到困惑,所以任何见解或想法都会很棒.
我过去常常$.ajax()使用本地.asmx webservice.这是我的电话代码:
$("#btnGetOne").click(function() {
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: 'http://localhost:53003/TestWebService.asmx/GetServant',
data: '{ "servant_id": "' + $("#txtServantID").val() + '" }',
dataType: 'json',
success: function(data, textStatus, jqXHR) {
var jsnData = $.parseJSON(data.d);
$('#DisplayArea').html(jsnData.Servant_Name);
},
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus + ' ' + errorThrown);
}
});
});
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,当我单击btnGetOne时执行ajax调用.
在我的问题标题中,这适用于jquery-1.4.1,但是当我使用jquery-1.6.2时,我得到一个errorThrown说法No Transport.
还有什么我想念的吗?
我正在阅读有关此内容的几篇帖子,并对我的代码进行了一些更改,但没有运气.
任何人都可以看看这个,看看这里发生了什么?或者也许是另一种方式来做我需要的事情(使用ziptastic检索城市,邮政编码状态)
代码在Chrome(http://jsfiddle.net/7VtHc/117/)中正常工作
HTML
<asp:TextBox ID="txtZipCode" runat="server"></asp:TextBox>
<asp:TextBox ID="txtCity" runat="server"></asp:TextBox>
<asp:TextBox ID="txtState" runat="server"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)
脚本
<script src="http://code.jquery.com/jquery-1.10.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$("input[id$='txtZipCode']").keyup(function () {
var el = $(this);
if (el.val().length === 5) {
$.ajax({
url: "http://zip.getziptastic.com/v2/US/" + el.val(),
cache: false,
dataType: "json",
type: "GET",
success: function (result, success) {
$("input[id$='txtCity']").val(result.city);
$("input[id$='txtState']").val(result.state);
}
});
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
谢谢,
我正在尝试使用需要调用的API来获取具有基本HTTP身份验证的Json.我用javascript并不精彩.
我的代码是:
<script type="text/javascript">
$.getJSON({
'url': 'http://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex=1&pageSize=25',
'beforeSend': function(xhr) {
xhr.setRequestHeader("Authorization",
"Basic " + encodeBase64("ABCDEF" + ":" + password));
},
success: function(result) {
alert('done');
},
error: function(result) {
alert('no');
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
我希望这可以称之为成功或错误之一.因此输出应该是警告说"完成"或警告说"不".甚至是开发人员控制台中的错误告诉我出了什么问题.
我没有得到任何东西,也没有警报显示,我在控制台中没有错误.有什么想法在这里发生了什么?
谢谢,
编辑:使用firebug我看到请求标题是:请求标题显示为:
OPTIONS /api/KIS/Institutions.JSON?pageIndex=1&pageSize=25 HTTP/1.1
Host: data.unistats.ac.uk
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: null
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)
这似乎不正确,因为它应该是:授权:基本TheSecurityKey
响应是405,方法不允许重新加载页面以获取源代码:http://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex = 1&pageSize = 25
响应标头:
HTTP/1.1 405 Method Not Allowed …Run Code Online (Sandbox Code Playgroud) ajax ×7
jquery ×7
cross-domain ×4
javascript ×3
getjson ×2
asp.net ×1
json ×1
php ×1
web-services ×1