我有一个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小部件,它提供标准的扩展点.其中之一就是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请求?
我一直在向控制台添加日志,以便在不使用Firefox调试器的情况下检查不同变量的状态.
但是,在我console.log在我的main.js文件中添加一个的许多地方,我收到以下错误而不是我可爱的小手写消息给自己:
主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用.如需更多帮助http://xhr.spec.whatwg.org/
我console.log可以添加到我的代码使用的替代品或包装器,这不会导致此错误?
我做错了吗?
我收到一条警告信息:
主线程上的同步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调用上传文件到服务器.如文档中所述,我将文件上传到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)
如果有人能提供帮助,我将不胜感激.先感谢您
我有一个JavaScript函数,使用jQuery发出两个连续的Ajax请求.我想确保在调用第二个函数之前加载了第一个请求.有没有办法可以做到这一点?
我知道这个问题在这里发布了很多次,但是我尝试了所有可以在堆栈溢出时找到的解决方案,但没有一个能够工作.我只是想做一个简单的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",但没有用.我不知道该怎么办.
我想要做的应该是简单的.
我正在尝试将一些表单值发布到返回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) ajax ×7
jquery ×7
javascript ×5
asynchronous ×2
backbone.js ×1
console.log ×1
debugging ×1
firefox ×1
flask ×1
post ×1
python ×1