这个是本人学习之用,比较乱
我也不知道这是在教大家什么,但如果你能看懂,那你就能真正干活了
//https-ajax.go
package main
import ( "fmt" "io" "net/http" "encoding/json" "github.com/bitly/go-simplejson" )
func OnAjax(res http.ResponseWriter, req *http.Request) { query := req.URL.Query() fmt.Println("get ", len(query)) if len(query["param1"]) > 0 { fmt.Println("get ", query["param1"][0]) } if len(query["param2"]) > 0 { fmt.Println("get ", query["param2"][0]) }
var detail MyData
detail.Name = "1" detail.Other = 2.0789
body, err := json.Marshal(detail) if err != nil { panic(err.Error()) } fmt.Println("body ", body) fmt.Println("string body ", string(body))
js, err := simplejson.NewJson(body) if err != nil { panic(err.Error()) } fmt.Printf("%T:%v\n",js,js) _map,_ := js.Map() fmt.Println("map ", _map) fmt.Println("js count ", len(_map)) item := js.Get("item") fmt.Println("item ", item.MustString()) amount := js.Get("amount") //fmt.Println("amount ", amount.MustBool()) fmt.Println("amount ", amount.MustFloat64())
//io.WriteString(res, "These are data from server") io.WriteString(res, string(body)) }
func OnRes(res http.ResponseWriter, req *http.Request) { req.ParseForm() fmt.Println("post", req.PostForm) fmt.Println("post param1 ", req.PostFormValue("param1")) fmt.Println("post param2 ", req.PostFormValue("param2")) io.WriteString(res, "infosec") }
type MyData struct { Name string `json:"item"` Other float32 `json:"amount"` }
func main() { //static web http.Handle("/", http.FileServer(http.Dir("web"))) //dynamic web http.HandleFunc("/ajax", OnAjax) http.HandleFunc("/infosec", OnRes)
// start server fmt.Println("Server is running at localhost:8086") //err := http.ListenAndServe(":8086", nil) err := http.ListenAndServeTLS(":8086", "server.crt", "server.key", nil) if err != nil { fmt.Println("Server failure /// ", err) } }
//html: /web/ajax.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title>Go语言与ajax示例</title> </head> <body> <p><input /></p>
<script> window.onload = main;
function main() { var oBtn = document.getElementById('btn1'); oBtn.onclick = OnButton1; }
var MyXMLHttpRequest = function(){ var xmlhttprequest = new XMLHttpRequest(); if(xmlhttprequest == undefined || xmlhttprequest == null){ alert("XMLHttpRequest Object create failure!!"); }else{ this.xhr = xmlhttprequest; } //Method of sending by user MyXMLHttpRequest.prototype.send=function(method,url,data){ if(this.xhr!=undefined && this.xhr!=null){ this.xhr.open(method,url,false); if (method=="POST" || method=="post"){ this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); } this.xhr.send(data); return this.xhr.responseText; } } }
function OnButton1() { var xhr = new XMLHttpRequest(); var mode = 1; if (mode==0) { //async xhr.open('get', '/ajax', true); xhr.send(); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { if (xhr.status == 200) { var oTxt = document.getElementById('txt1'); oTxt.value = xhr.responseText; } } } } if (mode==1) { //sync xhr.open('get', '/ajax?param1=1.00765¶m2=2', false); xhr.send(); var oTxt = document.getElementById('txt1'); oTxt.value = xhr.responseText; //=>to JSON var obj = JSON.parse(oTxt.value); for(var p in obj) { alert(p+" "+obj[p]); } //=>toString var str = JSON.stringify(obj); alert(str); } xhr = new MyXMLHttpRequest(); var res = xhr.send('post', '/infosec', "param1=1.00765¶m2=2"); alert(res); } </script>
</body> </html>
//服务端调试信息
C:\go-pro\go-https>https-ajax.exe Server is running at localhost:8086 get 2 get 1.00765 get 2 body [123 34 105 116 101 109 34 58 34 49 34 44 34 97 109 111 117 110 116 34 58 50 46 48 55 56 57 125] string body {"item":"1","amount":2.0789} *simplejson.Json:&{map[item:1 amount:2.0789]} map map[item:1 amount:2.0789] js count 2 item 1 amount 2.0789
Finally:
我也无语,你们看着办吧!
|
请发表评论