我有一个JavaScript小部件,它提供标准的扩展点.其中之一就是beforecreate功能.它应该返回false以防止创建项目.
我使用jQuery在这个函数中添加了一个Ajax调用:
beforecreate: function (node, targetNode, type, to) {
jQuery.get('http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),
function (result) {
if (result.isOk == false)
alert(result.message);
});
}
Run Code Online (Sandbox Code Playgroud)
但我想阻止我的小部件创建项目,所以我应该返回false母函数,而不是回调.有没有办法使用jQuery或任何其他浏览器中的API执行同步AJAX请求?
我正在尝试使用AJAX加载跨域HTML页面,但除非dataType是"jsonp",否则我无法获得响应.但是,使用jsonp,浏览器需要一个脚本mime类型,但是正在接收"text/html".
我的请求代码是:
$.ajax({
type: "GET",
url: "http://saskatchewan.univ-ubs.fr:8080/SASStoredProcess/do?_username=DARTIES3-2012&_password=P@ssw0rd&_program=%2FUtilisateurs%2FDARTIES3-2012%2FMon+dossier%2Fanalyse_dc&annee=2012&ind=V&_action=execute",
dataType: "jsonp",
}).success( function( data ) {
$( 'div.ajax-field' ).html( data );
});
Run Code Online (Sandbox Code Playgroud)
有没有办法避免使用jsonp进行请求?我已经尝试过使用crossDomain参数,但它没有用.
如果没有,是否有任何方式在jsonp中接收html内容?目前,控制台在jsonp回复中说"意外<".
var xhttp=new XMLHttpRequest();
xhttp.open('GET', 'foo.xml', false);
Run Code Online (Sandbox Code Playgroud)
F12弹出:SCRIPT5:访问被拒绝.在第95行,这是xhttp.open行.
我的JavaScript似乎格式正确,Firefox做了我认为应该做的事情.
我已经阅读了很多与此非常类似的问题,所以我查看了同源策略,但我看不出它是如何应用的,因为foo.xml与html文件位于同一目录中.我在我的本地Intranet上打开了脚本权限,并告诉迈克菲休息五分钟,这是肯定的.我甚至试过以管理员身份运行IE,所以这不是真正的权限问题吗?为什么IE会被拒绝访问本地文件?
我想用jquery ajax用以下代码解析JSON数组数据:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Sample</title>
<script type="text/javascript" src="Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
var result;
function jsonparser1() {
$.ajax({
type: "GET",
url: "http://10.211.2.219:8080/SampleWebService/sample.do",
dataType: "jsonp",
success: function (xml) {
alert(xml.data[0].city);
result = xml.code;
document.myform.result1.value = result;
},
});
}
</script>
</head>
<body>
<p id="details"></p>
<form name="myform">
<input type="button" name="clickme" value="Click here to show the first name" onclick=jsonparser1() />
<input type="text" name="result1" readonly="true"/>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的JSON数据是:
{"Data": [{"Address":"chetpet","FirstName":"arulmani","Id":1,"LastName":"sathish","City":"chennai"},{"Address":"ramapuram","FirstName":"raj","Id":2,"LastName":"nagu","City":"chennai"},{"Address":"ramapuram","FirstName":"raj","Id":2,"LastName":"nagu","City":"chennai"},{"Address":"ramapuram","FirstName":"ramaraj","Id":3,"LastName":"rajesh","City":"chennai"},{"Address":"ramapuram","FirstName":"yendran","Id":3,"LastName":"sathi","City":"chennai"}],"Code":true}
Run Code Online (Sandbox Code Playgroud)
但我没有得到任何输出......任何人请帮助...
我正在写一个简单的网站,作为一个成语输入,并从牛津词典返回其含义和例子.这是我的想法:
我向以下网址发送请求:
http://www.oxfordlearnersdictionaries.com/search/english/direct/?q=[idiom]
Run Code Online (Sandbox Code Playgroud)
例如,如果成语"不太远",我会发送一个请求:
http://www.oxfordlearnersdictionaries.com/search/english/direct/?q=not+go+far
Run Code Online (Sandbox Code Playgroud)
我将被重定向到以下页面:
http://www.oxfordlearnersdictionaries.com/definition/english/far_1#far_1__192
Run Code Online (Sandbox Code Playgroud)
在这个页面上,我可以提取成语的含义和例子.这是我的测试代码.它会提醒响应网址:
<input id="idiom" type="text" name="" value="" placeholder="Enter your idiom here">
<br>
<button id="submit" type="">Submit</button>
<script type="text/javascript">
$(document).ready(function(){
$("#submit").bind('click',function(){
var idiom=$("#idiom").val();
$.ajax({
type: "GET",
url: 'http://www.oxfordlearnersdictionaries.com/search/english/direct/',
data:{q:idiom},
async:true,
crossDomain:true,
success: function(data, status, xhr) {
alert(xhr.getResponseHeader('Location'));
}
});
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
问题是我有一个错误:
跨源请求已阻止:同源策略不允许在http://www.oxfordlearnersdictionaries.com/search/english/direct/?q=by+far上读取远程资源.这可以通过将资源移动到同一域或启用CORS来解决.
谁能告诉我如何解决这个问题?另一种方法也很好
我有一个问题...我试图在" http://api.master18.tiket.com/search/autocomplete/hotel?q=mah&token=90d2fad44172390b11527557e6250e50&secretkey=83e2f0484edbd2ad6fc9888c1e30ea44&output=json "中获取json api
当我尝试离线模式(这意味着我在记事本中复制json API并在我的localhost中调用它)时使用此代码...
function getLast(){
$.ajax({
url:"http://localhost/tickets/json/api_airport.json",
type:'GET',
dataType:"json",
success:function(data){console.log(data.results.result[1].category);}
});
}
Run Code Online (Sandbox Code Playgroud)
它完美运行.:)
但是当我尝试使用以下代码的真实网址(" http://api.master18.tiket.com/search/autocomplete/hotel?q=mah&token=90d2fad44172390b11527557e6250e50&secretkey=83e2f0484edbd2ad6fc9888c1e30ea44&output=json ")时:
$.ajax({
url:"http://api.master18.tiket.com/search/autocomplete/hotel?q=mah&token=90d2fad44172390b11527557e6250e50&secretkey=83e2f0484edbd2ad6fc9888c1e30ea44&output=json",
type:'GET',
crossDomain:true,
beforeSend: function(x) {
if(x && x.overrideMimeType) {
x.overrideMimeType("application/j-son;charset=UTF-8");
}
},
success:function(data){console.log("Success");}
});
Run Code Online (Sandbox Code Playgroud)
然后在我的谷歌浏览器javascript控制台中,出现如下错误:"XMLHttpRequest无法加载http://api.master18.tiket.com/search/autocomplete/hotel?q=mah&token=90d2fad44172390b11527557e6250e50&secretkey=83e2f0484edbd2ad6fc9888c1e30ea44&output=json.原点(http) Access-Control-Allow-Origin不允许使用:// localhost."
我知道,它必须是跨域问题,有人可以帮助我吗?nb:一些代码,我从堆栈溢出社区得到....谢谢:)
我陷入了一个非常奇怪的问题,我想在我的ajax请求中向服务发送额外的param 授权,就像这样
Request headers
Authorization: bearer t-3e57cc74-3e7a-4fc7-9bbb-f6c83252db01
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: JSESSIONID=908D73C50F09E75C9A0D674C4CB33D2F; ROUTEID=.1; __unam=3c3246b-13bc693352d-aa1535c-1
Run Code Online (Sandbox Code Playgroud)
但是使用这段代码
headerParams = {'Authorization':'bearer t-7614f875-8423-4f20-a674-d7cf3096290e'};
obj = {
type: 'get',
url: 'https://api.sandbox.slcedu.org/api/rest/v1/students/test1',
headers: headerParams,
data: [],
dataType: 'json',
processData: false,
success: function(data) {
console.log('success');
console.log(data);
}
};
jQuery.ajax(obj);
Run Code Online (Sandbox Code Playgroud)
它发送这样没有传递值,它的请求类型也变成了OPTION而不是GET,这里是控制台日志
Accept: */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Access-Control-Request-Headers authorization
Access-Control-Request-Method GET
Connection keep-alive
Host api.sandbox.slcedu.org
Origin http://localhost
User-Agent Mozilla/5.0 (Windows …Run Code Online (Sandbox Code Playgroud) 我的服务器上托管了一个json文件.当我尝试向json文件发出Ajax"GET"请求时,它失败了.
在Safari中查看控制台,它说"无法加载资源".
Firebug显示"200 OK",但响应没有显示出来.甚至Firebug也没有显示JSON选项卡.
我相信这是因为使用AJAX不允许跨域请求.
我想知道如何克服这个问题?此外,如果我想在我的服务器上启用跨域请求,我相信crossdomain.xml需要创建一个文件或其他东西.我不确定,但这就是我所知道的.我在Google上搜索过,但找不到任何相关链接.
任何帮助都非常感谢.
谢谢.
更新: 我没有使用任何服务器端脚本语言(PHP,ASP.NET等).我使用的是纯HTML和JavaScript/jQuery.
更新2:
我使用以下代码来制作跨域请求:
<script src="jquery-1.6.2.js"></script>
<script>
$(document).ready(function () {
$.ajax({
dataType: 'jsonp',
data: '',
jsonp: 'jsonp_callback',
url: 'http://myhosting.net/myjsonfile.json',
success: function (jsonData) {
alert("success")
alert(jsonData);
},
error: function(errorObj) {
alert(errorObj.statusText);
},
});
});
Run Code Online (Sandbox Code Playgroud)
当我在Firebug的"Net"选项卡中看到时,我看到一个JSON选项卡,我能够看到json响应.但是,"success"回调处理程序不会被调用,但是"错误"回调处理程序被调用,我得到警告说parseerror.
知道什么可能是错的吗?
我有AJAX代码,如果您请求对远程服务器进行AJAX调用,请求将失败:
function loadXMLDoc() {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "http://www.google.com", true);
xmlhttp.send();
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决这个问题?
我的ajax代码是
$.ajax({
type: 'GET',
dataType: "jsonp",
processData: false,
crossDomain: true,
jsonp: false,
url: "http://someotherdomain.com/service.svc",
success: function (responseData, textStatus, jqXHR) {
console.log("in");
},
error: function (responseData, textStatus, errorThrown) {
alert('POST failed.');
}
});
Run Code Online (Sandbox Code Playgroud)
这是一个跨域的ajax请求.
我得到了正确的请求响应,同时用firebug检查我可以看到响应.
这是我在firebug响应中以及通过Web浏览器访问此URL时的响应
{"AuthenticateUserResult":"{\"PKPersonId\":1234,\"Salutation\":null,\"FirstName\":\"Miqdad\",\"LastName\":\"Kumar\",\"Designation\":null,\"Profile\":\"\",\"PhotoPath\":\"\/UploadFiles\/\"}"}
Run Code Online (Sandbox Code Playgroud)
但我收到了错误
SyntaxError: invalid label
{"AuthenticateUserResult":"{\"PKPersonId\":8970,\"Salutation\
Run Code Online (Sandbox Code Playgroud)
我是否需要使用任何其他方法来使其工作.我想在phonegap + jquery移动应用程序中实现这一点.
此外,我没有任何访问Web服务的权限
如果我禁用Chrome网络安全,它工作正常
ajax ×9
jquery ×8
javascript ×6
json ×4
cross-domain ×3
api ×1
asynchronous ×1
cordova ×1
cors ×1