Masalah saat menggunakan objek JSON di servlet

Inilah yang saya coba lakukan dan ini cukup sederhana tetapi saya mengalami kebuntuan: Saya mencoba mengirim objek JSON yang dibentuk di JSP ke servlet sisi server dan menguraikannya.

Apa yang telah saya lakukan sampai sekarang:

  • Membangun json.
  • mengirim json ke backend
$.ajax({
            data: jsontosend,
            url: 'MYSERVLET?name=asdf',
            success: function(res){
                alert('posted');
            }
        })

Masalah:

  • Nama apa yang direferensikan JSON ini sehingga saya bisa mendapatkannya di servlet menggunakan request.getParameter() ?
  • Ketika saya mencetak request.getParameterNames() , saya mendapatkan nama parameter sebagai string JSON itu sendiri sehingga output dari semua nama parameter di dalam MYSERVLET terlihat seperti ini
Parameter = name
Parameter = {"ticker":"asd","date":"asd","bucket":"300","entry":[{"type":"asd","indicator":"asd","condition":"asd"}],"exit":[{"type":"qwe","indicator":"qwe","condition":"qwe"}]}

Adakah yang tahu apa masalahnya?

Saya juga mencoba melihat pertanyaan ini di sini di stackoverflow tetapi masalah yang sama juga terjadi di sana. Juga ada pertanyaan duplikat yang belum telah dijawab.

Membantu! :(


person Shrayas    schedule 08.09.2011    source sumber
comment
Pernahkah Anda menggunakan sesuatu seperti LiveHeaders Firefox untuk melihat apa yang dikirim? Anda akan dapat melihat semua pasangan nilai kunci dikirim ke servlet pengarah.   -  person El Guapo    schedule 08.09.2011


Jawaban (2)


Baca http://api.jquery.com/jQuery.ajax/#sending-data-to-server:

Opsi data dapat berisi string kueri dalam bentuk key1=value1&key2=value2, atau peta dalam bentuk {key1: 'value1', key2: 'value2'}. Jika bentuk terakhir digunakan, data diubah menjadi string kueri menggunakan jQuery.param() sebelum dikirim.

Jadi, sebaiknya Anda gunakan

$.ajax({
        data: {theNameOfTheParameter : jsontosend,
               name : 'asdf'},
        url: 'MYSERVLET',
        success: function(res){
            alert('posted');
        }
    })

dan gunakan request.getParameter("theNameOfTheParameter") untuk mendapatkan string JSON.

person JB Nizet    schedule 08.09.2011
comment
SAUS YANG LUAR BIASA. TERIMA KASIH BANYAK PRIA! :D - person Shrayas; 08.09.2011

Anda tidak mendapatkan objek json di servlet Anda. JQuery mengubahnya menjadi parameter http seperti yang Anda dapatkan dari formulir. Contoh: ?ticker=asd&bucket=300

Jadi, untuk menjawab pertanyaanmu. Tidak ada nama tunggal. Keberatan json diledakkan ke beberapa nama.

EDIT: coba tambahkan tipe: 'posting'

untuk permintaan Anda. Anda juga dapat menambahkan processData: false dalam hal ini JQuery akan mengirimkan parameter json dan bukan http. Pokoknya saya sangat merekomendasikan menggunakan debugger http seperti fiddler yang akan memperjelas apa yang dikirim bolak-balik.

person Esben Skov Pedersen    schedule 08.09.2011
comment
Saya baru saja mencobanya dengan melakukan System.out.println(request.getParameter("ticker")); dan saya mendapatkan null :( - person Shrayas; 08.09.2011
comment
@shreyas: apakah kamu menemukan solusinya ?? tolong bagikan jika Anda melakukannya. - person streak; 07.10.2013