相关疑难解决方法(0)

如何从异步调用返回响应?

我有一个foo发出Ajax请求的函数.我怎样才能从中回复foo

我尝试从success回调中返回值,并将响应分配给函数内部的局部变量并返回该变量,但这些方法都没有实际返回响应.

function foo() {
    var result;

    $.ajax({
        url: '...',
        success: function(response) {
            result = response;
            // return response; // <- I tried that one as well
        }
    });

    return result;
}

var result = foo(); // It always ends up being `undefined`.
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery asynchronous xmlhttprequest

5208
推荐指数
38
解决办法
134万
查看次数

如何让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万
查看次数

JavaScript console.log导致错误:"主线程上的同步XMLHttpRequest已弃用..."

我一直在向控制台添加日志,以便在不使用Firefox调试器的情况下检查不同变量的状态.

但是,在我console.log在我的main.js文件中添加一个的许多地方,我收到以下错误而不是我可爱的小手写消息给自己:

主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用.如需更多帮助http://xhr.spec.whatwg.org/

console.log可以添加到我的代码使用的替代品或包装器,这不会导致此错误?

我做错了吗?

debugging firefox jquery backbone.js console.log

373
推荐指数
16
解决办法
64万
查看次数

同步XMLHttpRequest警告和<script>

我收到一条警告信息:

主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用.如需更多帮助,请访问http://xhr.spec.whatwg.org/.

当执行包含脚本(具有本地src)的异步AJAX请求时,使用$.html()方法将其注入HTML .我已经将给定的脚本更改为包含async="async",但警告消息仍然存在.

我已经开始调试这个问题,发现我的附加<script>是通过来自jQuery.ajaxTransport(http://code.jquery.com/jquery-1.10.0.js,#8663)的jquery AJAX调用来处理的,其中async设置为false(这可能是问题来自).

现在 - 我该怎么办呢?

该消息显示在最新版本的Chrome和Firefox中.


虽然我无法在jsfiddle上提供测试用例,但这是一个显示问题的测试用例:

的test.html

<html>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.js"></script>
<script>
$(document).ready(function(){
    $.ajax({
        url: '/response.html',
        success: function(response){
            $(document.body).html(response);
        }
    })
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

response.html

<script type="text/javascript" src="/json.js" async="async"></script>
Run Code Online (Sandbox Code Playgroud)

json.js

console.log('hi');
Run Code Online (Sandbox Code Playgroud)

触发警告不需要AJAX请求 - 只需要插入一个 <script>

test2.html

<html>
<body>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.js"></script>
<script>
$(document).ready(function(){
    $(document.body).html('<script type="text/javascript" src="/json.js" async="async"><\/script>');
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

值得注意的是,这已经修复,按照https://github.com/jquery/jquery/issues/2060

ajax jquery

57
推荐指数
5
解决办法
14万
查看次数

如何使用烧瓶中的ajax调用上传文件

嗨,我对烧瓶很新,我想使用ajax调用上传文件到服务器.如文档中所述,我将文件上传到html,如下所示:

<form action="" method=post enctype="multipart/form-data" id="testid">
 <table>
  <tr>
   <td>
     <label>Upload</label>
   </td>
   <td>
     <input id="upload_content_id" type="file" name="upload_file" multiple>
     <input type="button" name="btn_uplpad" id="btn_upload_id" class="btn-upload" value="Upload"/>

   </td>
  </tr>
 </table>
</form>
Run Code Online (Sandbox Code Playgroud)

我写了这个ajax处理程序

$(document).ready(function() {
    $("#btn_upload_id" ).click(function() {           
        $.ajax({
            type : "POST",
            url : "/uploadajax",
            cache: false,
            async: false,
            success : function (data) {},
            error: function (XMLHttpRequest, textStatus, errorThrown) {}
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

我不知道如何从这里获取上传的文件(不是名字)

  <input id="upload_content_id" type="file" name="upload_file" multiple>
Run Code Online (Sandbox Code Playgroud)

并将文件保存在文件夹中.我不太确定如何从我编写的处理程序中读取文件:

@app.route('/uploadajax', methods = ['POST'])
def upldfile():
    if request.method == 'POST':
        file_val = request.files['file']
Run Code Online (Sandbox Code Playgroud)

如果有人能提供帮助,我将不胜感激.先感谢您

python ajax flask

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

确保第一个ajax函数在第二个之前完成

我有一个JavaScript函数,使用jQuery发出两个连续的Ajax请求.我想确保在调用第二个函数之前加载了第一个请求.有没有办法可以做到这一点?

javascript ajax jquery

7
推荐指数
1
解决办法
3746
查看次数

主线程上的同步XMLHttpRequest已弃用...尝试了许多不同的解决方案

我知道这个问题在这里发布了很多次,但是我尝试了所有可以在堆栈溢出时找到的解决方案,但没有一个能够工作.我只是想做一个简单的ajax查询来加载div中的页面.就像这样简单:

function loadHome(){
$('#container').html('<div class="loader"></div>');
$.ajax({
    type: "GET",
    url: "home.php",
        success: function(msg){
            $("#container").html(msg);
        }
});
}
Run Code Online (Sandbox Code Playgroud)

在控制台日志中,我得到了

主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用.如需更多帮助,请查看http://xhr.spec.whatwg.org/

除非我重新加载页面,否则主页上的一些javascript将无法运行.该页面默认已加载home.phpdiv内部,但我希望它加载其他页面然后当我点击"home"时它应该正常加载,并且由于该错误而没有发生.我已经尝试使用"async:true",但没有用.我不知道该怎么办.

javascript ajax jquery xmlhttprequest

7
推荐指数
1
解决办法
2万
查看次数

Ajax POST - 同步请求的'XMLHttpRequest.withCredentials'已弃用

我想要做的应该是简单的.

我正在尝试将一些表单值发布到返回JSON的mvc控制器.

如果我成功了,我会显示一个弹出窗口,如果我弄错了,我会显示另一个弹出窗口.

但是在控制台中我遇到两个错误:

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

browserLink:37 Setting 'XMLHttpRequest.withCredentials' for synchronous  requests is deprecated.
Navigated to http://aso.local/
Run Code Online (Sandbox Code Playgroud)

并且页面只是重新加载.

继承我的代码:

    $('#mail-message-btn').click(function () {
    if ($("form")[0].checkValidity()) {
        var formParams = $('#contact-form').serialize();
        $.post('/umbraco/surface/Contact/ContactForm', formParams, function (data) {
            processData(data);
        });
    }
});


function processData(data) {
    $('#mail-failure').hide();
    $('#invalid-email').hide();
    $('#empty-field').hide();
    $('#mail-success').hide();
    if (data.success == 'True') {
        $('#mail-message-header').toggleClass('mail-message-error', false);
        $('#mail-message-header').toggleClass('mail-message-success', true);
        $('#mail-success').show();
        $('#mail-message').show();

        alert("true");
    } else …
Run Code Online (Sandbox Code Playgroud)

javascript ajax model-view-controller jquery post

4
推荐指数
1
解决办法
5988
查看次数