sendAjaxJSON
一般用户可以忽略本节内容。
Foxtable为WeUI扩展了一个名为"sendAjaxJSON"的函数,用于向服务器发送JSON数据,语法:
sendAjaxJSON(data,url,func,asyn)
data | 要发送的数据,可以是一个对象,也可以是一个JSON格式的字符串。 |
url | 接收数据的目标网页。 |
func | 回调函数名,收到服务器返回信息后,会调用此函数进行处理。 |
asyn | 逻辑型,可选参数,是否异步执行,默认为true,如果要同步执行,请设置为false。 注意是true和false,不是True和False。 |
例如:
sendAjaxJSON(val,"json.htm","afterSendJson")
表示将val(JSON数据或对象)异步发送到页面json.htm,由afterSendJson函数负责处理接收到的数据。
当asyn参数为False,也可以不指定func参数,此时sendAjaxJSON函数将返回一个值,此值就是服务器返回的数据,例如:
var result = sendAjaxJSON(val,"json.htm","",false)
表示将将val(JSON数据或对象)同步发送到页面json.htm,将返回值保存在变量result中。
一个例子
1、在"d:\web"目录下,建立一个子目录lib,在这个目录建立一个文本文件,文件名为"ajaxform.js",文件内容为:
//发送JSON对象
function sendJsonObject(){
var obj=new Object();
obj.name = "舒淇";
obj.age=39;
var result = sendAjaxJSON(obj,"json.htm","",false);
document.getElementById("p1").innerHTML=result;
}
//发送JSON字符串
function sendJsonString(){
var val= '{"name":"李云龙","age":"36"}'
var result = sendAjaxJSON(val,"json.htm","",false);
document.getElementById("p1").innerHTML=result;
}
2、HttpRequest事件代码:
Select
Case e.Path
Case "test.htm"
Dim wb
As New
weui
wb.AddForm("","form1","test.htm")
With wb.AddButtonGroup("form1","btg1",True)
'垂直排列
.Add("btn1",
"发送jason对象","button").Attribute="onclick='sendJsonObject()'"
.Add("btn2",
"发送jason字符串","button").Attribute="onclick='sendJsonString()'"
End With
wb.AppendHTML("<div
id='p1' style='margin:0.5em'></div>") '插入一个div,用于显示服务器返回的数据
wb.AppendHTML("<script
src='./lib/ajaxform.js'></script>") '引入脚本文件
e.WriteString(wb.Build)
Case "json.htm"
Dim sb
As New
StringBuilder
Dim jo
As JObject =
JObject.Parse(e.PlainText)
'解析JSON数据
sb.AppendLine("服务器收到的数据有:<br/>")
sb.AppendLine("name:"
& jo("name").ToString()
& "<br/>")
sb.AppendLine("age:"
& jo("age").ToString())
e.WriteString(sb.ToString())
End
Select
HttpRequest将收到JSON数据以纯文本形式保存在e参数PlainText中,我们需要对其进行解析,参考:解析JSON。
此外我们这个例子,直接将服务器返回的数据显示在当前页面中,这个技巧是很实用的,望大家掌握: