Pertanyaan Di jQuery, saya mengembalikan HTML dalam hasil JSON, apa yang harus saya hindari?


Di dalam saya Ajax permintaan (menggunakan jQuery) Saya kembali a JSON tanggapan.

Jadi json.Html akan memiliki string HTML yang ingin saya tambahkan di dalam div.

Di sisi server, apakah saya harus menghindari HTML sama sekali?

Dalam aksi MVC saya, saya kembali:

return Content("{html: ???????}, "application/json");

7
2018-03-17 04:06


asal


Jawaban:


Solusi alternatif adalah mengembalikan HTML dan menggunakan jQuery load():

$('#someDiv').load('servershtml.html');

Untuk melakukannya dengan cara Anda, Anda hanya perlu menghindari tanda kutip ganda dan garis miring terbalik.

Itu spesifikasi sangat mudah dibaca dan singkat.


14
2018-03-17 04:12



Anda hanya perlu menambahkan garis miring ke tanda kutip dan garis miring (ala \ "dan \\) saat keluar dari konten untuk dimasukkan ke string JSON. Karakter HTML tidak ada artinya di dalam string JSON, jadi mereka baik-baik saja :)

Tentu saja, pastikan string Anda dengan sendirinya terbentuk dengan baik (X) HTML sehingga tidak meledak ketika dimasukkan ke dalam div.


7
2018-03-17 04:10



Saat membuat JSON dengan HTML Anda harus melarikan diri dari karakter double-quote, dan juga karakter CLRF dan itu akan mengembalikan denda HTML.

Saya bekerja dengan pl / sql dalam prosedur oracle yang dipanggil dari permintaan AJAX. Jika Anda mau, saya dapat memposting implementasi.

Anda harus menguji output Anda http://www.jsonlint.com/ untuk melihat apakah itu valid.

Begitu

{
    "id": "1",
    "html_value": "<a href=\"http://www.google.com\">test link returnin html code</a>"
}

berbeda dari

{
    "id": "1",
    "html_value": "<a href=\"http://www.google.com\">test link returnin
 html code</a>"
}

karena karakter CLRF. Anda harus mengganti yang di sisi server dengan &nbsp; atau <br/>.

Semoga ini membantu, Alex


6
2017-11-15 15:14



Saya akan posting pengalaman saya dengan PHP. Saya berharap itu bisa membantu.

Biasanya, seseorang menggunakan json_encode() berfungsi untuk menyandikan data, misalnya:

json_encode(array('data1' => 'String data with text',
              'data2' => '<a href="www.stackoverflow.com">The Site</a>'));

Sejak json_encode() berfungsi dengan baik hanya dengan string UTF-8, saya sarankan untuk menyandikan setiap string dalam UTF-8 melalui fungsi utf8_encode(), i.e.

json_encode(array(utf8_encode('data1') => utf8_encode('String data with text'),
              utf8_encode('data2') => utf8_encode('<a href="www.stackoverflow.com">The Site</a>')));

Selain itu, jika Anda menggunakan karakter khusus (seperti è dan Sebuah dalam bahasa Italia), saya sarankan untuk memecahkan kode HTML yang dikodekan kembali json UTF8. Ini sangat berguna jika Anda perlu menggunakannya di halaman HTML (mis. Sebagai akibat dari panggilan AJAX). Untuk memecahkan kode Javascript, gunakan:

decodeURIComponent(escape(html));

dimana html adalah kode HTML yang dikodekan kembali.

Salam.


5
2017-08-14 15:55



Jika Anda mengatur dataType  opsi konfigurasi untuk 'json' maka objek itu diteruskan ke complete event akan menjadi objek javascript. Pada dasarnya, jQuery akan melakukan pekerjaan mengubah konten respons (dengan asumsi JSON yang diformat dengan benar) ke objek javascript. Contoh...

$.ajax({
    dataType: 'json',
    complete: function(myJsonObject) {
        alert(myJsonObject.someMember);
    }
}); //$.ajax({

Jika Anda bertanya-tanya bagaimana cara menghasilkan JSON yang diformat dengan benar dari .net, maka saya akan mendorong Anda untuk menjelajah Json.NET karena itu membuat menghasilkan JSON sangat, sangat mudah.


1
2018-03-17 06:08



Jika Anda menggunakan PHP json_encode, lakukan trik untuk Anda:

$htmlSnippet = '<a href="#"></foo>';
return json_encode(array("html" => $htmlSnippet));

Di jQuery Anda mendeklarasikan dataType 'json' (lihat jawaban di atas) atau decoding oleh jQuery.parseJSON


1
2018-05-07 09:59