警告时,它始终会提醒Imports System.IO
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim di As New IO.DirectoryInfo("c:\la")
Dim diar1 As IO.FileInfo() = di.GetFiles()
Dim dra As IO.FileInfo
For Each dra In diar1
'Dim sr As StreamReader = New StreamReader(dra.FullName)
If System.IO.Path.GetExtension(dra.Name).ToLower() = ".xls" Then
TreeView1.Nodes.Add("Offerts")
TreeView1.Nodes(0).Nodes.Add(dra.Name)
End If
Next
End Sub
End Class
。 jojo
有文字test2.php
div更新为Loco
,但全局变量没有变化。我试过Loco
,但它没有用。
如何在变量中获取返回值?请指导......
window.temp = data
答案 0 :(得分:4)
这是一个异步函数。 (这就是AJAX中的 A 所代表的。)您正在立即警告temp
的值,因此它在异步调用完成之前发生。如果你添加
alert(temp);
在success
处理程序的末尾,您将看到值已更新。
答案 1 :(得分:1)
1)的变化
var temp = 'jojo'
至
'temp ='jojo'
因为这不仅限于执行上下文而且不限于文件(有优点和缺点 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var
2)问题是在回调之前调用了警报。 将警报移动到该功能中。由于ajax是异步调用的,意味着调用成功和错误函数,只有当ajax从服务器获得响应时,才会立即调用现在的警报。
http://javascript.about.com/od/ajax/a/ajaxasyn.htm
$.ajax({
url: 'test2.php', //Loco
success: function(data)
{
temp = data;
$('div').html(data);
alert(temp).
},
error: function (err)
{
alert('error');
}
});
3)或者你可以将ajax的异步设置为false: What does "async: false" do in jQuery.ajax()? 哪个会导致Ajax调用将在下一行代码之前完成,但强烈建议不要这样做。
答案 2 :(得分:1)
AJAX - {
"query": {
"bool": {
"must": [
{ "term": {"app.raw": "ME"} }
,{ "term": {"cat.raw": "IV"} }
,{ "term": {"sub.raw": "Act"} }
]
}
}
,
"aggs": {
"distinct_users": {
"cardinality": {
"field": "login",
"precision_threshold": 1000
}
}
}
}
意味着你不是在等待响应来,Javascript被解释为语言在另一行之后执行。所以这里首先执行asynchronous
,然后执行成功回调,因为需要一些时间来获得响应。
答案 3 :(得分:0)
只需在您的 ajax 选项中添加 async: false
。