@damonpolt

Как пнуть данные с Golang обратно на Js через AJAX?

Не так давно начал штурмовать Go. И вот цяцькаясь с AJAX реквестом наткнулся на проблемку. В корне у меня лежит, как не трудно догадаться, index разметка с Jquery AJAX-ом.
<body>
	<button id="send">Send</button>
</body>
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="  crossorigin="anonymous"></script>
<script>
	var data;
	$('#send').click(function() {
		$.ajax({
			url: "http://localhost:8080/receive",
			method: "POST",
			data : { sendedData: 'Hello'},
            success : function(data) {
                alert(data);
            },
		});
	});
</script>

Ну и отправляю я этот Hello сервер. Пока что все в порядке. Все в консоли отображается и тп.
package main

 import (
 	"fmt"
 	"net/http"
 )

 func swap(a,b string) (string,string) {
	return b, a
}

 func receiveAjax(w http.ResponseWriter, r *http.Request) {
 	if r.Method == "POST" {
 		sendedData := r.FormValue("sendedData")
 		fmt.Println("My request is: ", sendedData)
 		a, b := swap(sendedData, "World")
 		fmt.Println(a, b)
 	}
 }

 func main() {
 	http.HandleFunc("/receive", receiveAjax)

 	http.ListenAndServe(":8080", nil)
 }

Ну и всеже, почему я тут пишу. Я хочу отправить результат выше провернутых функций назад в index файл и вывести через alert. В гугле есть инфа с подключением index разметки напрямую к GO. Hо хотелось бы реализовать это без нее, как я это делал когда-то через echo в PHP.

Короче если кто-то просветит буду признателен!
  • Вопрос задан
  • 3986 просмотров
Пригласить эксперта
Ответы на вопрос 1
Две минуты гугления:

// AJAX Request Handler
func ajaxHandler(w http.ResponseWriter, r *http.Request) {
    //parse request to struct
    var d Data
    err := json.NewDecoder(r.Body).Decode(&d)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
    }

    // create json response from struct
    a, err := json.Marshal(d)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
    }
    w.Write(a)
}


Вам, скорее всего, и нужен w.Write(a).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы