JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » AJAX討論區 » JavaScript Library  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
作者 幫忙看一下這段JQuery錯在哪
老陳





發文: 161
積分: 2
於 2015-04-22 02:36 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
快瘋了, 很簡單的一段JQuery用GET Method call並用json傳遞資料的程式
可是不斷的跑到error, 然後IE告訴我 "字元無效"
可是我把data這個傳參數的拿掉就ok了~~ Disapproved

請大家幫忙看看到底問題在哪? 謝謝了!!

1
2
3
4
5
6
7
8
9
10
11
12
13
    var url = "/demo/test.do";
    $.ajax({
      url: url,
      method: "GET",
      dataType: "json",
      data: jQuery.parseJSON('[{"dispatch" : "add"}]'),
      success: function(data) {
          alert(data);
      },
      error: function(jqXHR, textStatus, errorThrown) {
          console.log(errorThrown);
      }
    });


reply to postreply to post
電腦是害人的工具,但是上帝卻可以藉著它行奇妙的大能
作者 Re:幫忙看一下這段JQuery錯在哪 [Re:老陳]
kentyeh





發文: 643
積分: 6
於 2015-04-22 05:28 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
1.9.0以後用 method: "GET" ,
之前版本用 type: "GET",
還有 dataType 是指主機回傳時期待的資料型態(應該指的是 onSuccess裡的 data),
所以data改 data: {"dispatch" : "add"},畢竟http form submit 是以 name-value pair的方式傳遞,
如果真的要傳 json data,那就用 data: {"dispatch" : "json string ... blabla"}的方式傳,
在主機端再用 request.getParameter("dispatch") 把文字內容轉成 json
以上可見官方文件


reply to postreply to post
作者 Re:幫忙看一下這段JQuery錯在哪 [Re:kentyeh]
老陳





發文: 161
積分: 2
於 2015-04-22 06:11 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我的jquery版本是1.11.1的
感謝回覆, 我已經知道問題了, 因為我這個主要是連結struts2 action

action裡面這個dispatch我是用String來接, 可是我實際從actionContext.getParameters()取值出來看時
發現這個dispatch其實是String[]

所以實際上有跑進action, 可是因為參數型別問題, 所以error跳出

可能我要統一包一個POJO來傳了

謝謝kentyeh~~


reply to postreply to post
電腦是害人的工具,但是上帝卻可以藉著它行奇妙的大能
作者 Re:幫忙看一下這段JQuery錯在哪 [Re:老陳]
老陳





發文: 161
積分: 2
於 2015-04-22 06:29 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
不行也~~~~ 就算我包了POJO, dispatch印出來還是一個String[] >__<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class TestAction extends ActionSupport {
    private JsonParam jsonParam;
    public JsonParam getJsonParam() {
        return jsonParam;
    }
 
    public void setJsonParam(JsonParam jsonParam) {
        this.jsonParam = jsonParam;
    }
 
    @Override
    public String execute() throws Exception {
        ActionContext actionContext = ActionContext.getContext();
        Map<String, Object> params = actionContext.getParameters();
        System.out.println("param.get(jsonParam) : " + params.get("jsonParam"));
        System.out.println("jsonParam.getDispatch() : " + jsonParam.getDispatch());
    }
}
 
public class JsonParam {
  private String dispatch;
 
  public String getDispatch() {
    return dispatch;
  }
 
  public void setDispatch(String dispatch) {
    this.dispatch = dispatch;
  }
}
 
    var url = "/demo/test.dp";
    $.ajax({
      url: url,
      method: "GET",
      dataType: "json",
      data: {"jsonParam": [{"dispatch" : "add"}]},
      success: function(data, textStatus, jqXHR) {
          test(data, textStatus, jqXHR);
      },
      error: function(jqXHR, textStatus, errorThrown) {
          console.log(errorThrown);
      }
    });
  });


param.get(jsonParam) : null
jsonParam.getDispatch() : null


老陳 edited on 2015-04-22 06:35
reply to postreply to post
電腦是害人的工具,但是上帝卻可以藉著它行奇妙的大能
作者 Re:幫忙看一下這段JQuery錯在哪 [Re:老陳]
kentyeh





發文: 643
積分: 6
於 2015-04-22 12:58 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我覺得問題還是出在data參數上面,
之前的
1
2
3
4
5
6
7
8
9
10
11
12
$.ajax({
      url: "/demo/test.do",
      method: "GET",
      dataType: "json",
      data: {"dispatch" : "add"},
      success: function(data) {
          alert(data);
      },
      error: function(jqXHR, textStatus, errorThrown) {
          console.log(errorThrown);
      }
    });

還可能轉成 ://demo/test.do?dispatch=add 這樣的URL(您可在以在Firefox下安裝HttpFox Plugin或是在Chrome開啟 Developer Tools 觀察 http 傳送的URI)
至於 data 表示成
1
data: {"jsonParam": [{"dispatch" : "add"}]}

我真的不知道 browser 會怎麼 表示
1
http(s)://server/ContextPath/ServletPath/Pathinfo?jsonParam=????

我在jsfiddle.net試了一下,結果傳送出
http://fiddle.jshell.net/demo/test.do?jsonParam%5B0%5D%5Bdispatch%5D=add
不是很奇怪嗎?


reply to postreply to post
作者 Re:幫忙看一下這段JQuery錯在哪 [Re:老陳]
mow





發文: 103
積分: 0
於 2015-04-24 09:53 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
try add:
1
traditional: true


reply to postreply to post
» JWorld@TW »  AJAX討論區 » JavaScript Library

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8