1

私の問題は、このリンクの質問と似ています。複数のスライスまたは構造体を golang から ajax 成功ブロックに返す必要があります。スライスを JSON にマーシャリングしようとしましたが、文字列として ajax で受信されます。配列として受け取る必要があります。このような複数の配列または構造体を送信することは可能ですか?

私のコード:

b, _ := json.Marshal(aSlice)      // json Marshal
c, _ := json.Marshal(bSlice)
this.Ctx.ResponseWriter.Write(b) // Beego responsewriter
this.Ctx.ResponseWriter.Write(c)

私のアヤックス:

$.ajax({
        url: '/delete_process',
        type: 'post',
        dataType: 'html',
        data : "&processName=" + processName,
        success : function(data) {
            alert(data);
            alert(data.length)
        }
});

前もって感謝します。

4

2 に答える 2

2

@AH の答えは、複数のスライスに対して非常にうまく機能します。Struct が必要な場合は、コードを少し変更する必要があります。

 package controllers

import "github.com/astaxie/beego"
import "encoding/json"


type Controller2 struct {
    beego.Controller
}

type Controller2Result struct {
    Accommodation []string
    Vehicle []string
}

func (this *Controller2) Post() {
   var result Controller2Result

   aSlice := []string{"House", "Apartment", "Hostel"}
   bSlice := []string{"Car", "Moto", "Airplane"}
   result.Accommodation = aSlice
   result.Vehicle = bSlice

   s, _ := json.Marshal(result) 
   this.Ctx.ResponseWriter.Header().Set("Content-Type", "application/json")
   this.Ctx.ResponseWriter.Write(s) 

}

アヤックス

  $.ajax({
           url: '/Controller2',
           type: 'post',
           dataType: 'json',
           //data : "&processName=" + processName,
           success : function(data) {
              alert(JSON.stringify(data));
           }
         });

ここで説明する方法alert は文字列のみを表示できるdataJavaScript のオブジェクト型です。したがって、JSON.stringifyオブジェクトを JSON-String に変換するために使用する必要があります。

于 2016-05-24T18:28:03.487 に答える