相关疑难解决方法(0)

如何让jQuery执行同步而非异步的Ajax请求?

我有一个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请求?

javascript ajax jquery asynchronous

1173
推荐指数
13
解决办法
69万
查看次数

使用jQuery 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回复中说"意外<".

javascript ajax jquery cross-domain cors

127
推荐指数
4
解决办法
26万
查看次数

SCRIPT5:在xmlhttprequest上的IE9中拒绝访问

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会被拒绝访问本地文件?

javascript xmlhttprequest internet-explorer-9

46
推荐指数
4
解决办法
12万
查看次数

使用jQuery创建跨域ajax JSONP请求

我想用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)

但我没有得到任何输出......任何人请帮助...

javascript ajax jquery json

38
推荐指数
2
解决办法
13万
查看次数

Ajax跨源请求被阻止:同源策略不允许读取远程资源

我正在写一个简单的网站,作为一个成语输入,并从牛津词典返回其含义和例子.这是我的想法:

我向以下网址发送请求:

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来解决.

谁能告诉我如何解决这个问题?另一种方法也很好

ajax jquery cross-domain

30
推荐指数
5
解决办法
22万
查看次数

Access-Control-Allow-Origin不允许使用origin http:// localhost.

我有一个问题...我试图在" 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:一些代码,我从堆栈溢出社区得到....谢谢:)

api ajax jquery json

24
推荐指数
1
解决办法
10万
查看次数

设置请求标头jQuery Ajax

我陷入了一个非常奇怪的问题,我想在我的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)

javascript ajax jquery

22
推荐指数
3
解决办法
7万
查看次数

如何在服务器上启用跨域请求?

我的服务器上托管了一个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 jquery json cross-domain

20
推荐指数
2
解决办法
8万
查看次数

向另一台服务器发出AJAX请求

我有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)

我该怎么做才能解决这个问题?

javascript ajax

15
推荐指数
1
解决办法
3万
查看次数

jQuery跨域Ajax

我的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 jquery json jquery-mobile cordova

14
推荐指数
2
解决办法
10万
查看次数