cari
Rumahhujung hadapan webtutorial jsPerbincangan ringkas tentang perbezaan antara JSON dan JSONP dan penggunaan jQuery's ajax jsonp_jquery

JSON dan JSONP

JSON (JavaScript Object Notation) ialah format pertukaran data ringan yang digunakan untuk bertukar maklumat antara penyemak imbas dan pelayan.

JSONP (JSON With Padding) ialah JSON (atau JSON yang dibungkus) yang dibungkus dalam panggilan fungsi.

JSON ialah format data dan JSONP ialah kaedah panggilan data.

Salin kod Kod adalah seperti berikut:

//JSON
{
“nama”: “sb”
}

Salin kod Kod adalah seperti berikut:

//JSONP
panggil balik({
“nama”: “sb”
})

Atas sebab keselamatan, skrip (AJAX) tidak boleh mengakses kandungan di luar domain ini. Walau bagaimanapun, sumber statik tidak dihadkan oleh dasar domain dan boleh memuatkan skrip, gaya, gambar dan sumber statik lain daripada mana-mana domain JSOP menggunakan prinsip ini untuk mencapai pemerolehan data merentas domain.

Contoh 1:

Salin kod Kod adalah seperti berikut:

//Tentukan fungsi shoPrice
function showPrice(data) {
alert("Simbol: " data.symbol ", Harga: " data.price);
}

Salin kod Kod adalah seperti berikut:

//Sertakan fungsi dan parameter showPrice dalam halaman Web

Contoh ini menunjukkan cara memanggil fungsi JavaScript dengan data JSON statik sebagai parameter.

Contoh 2:

Panggilan fungsi pertama boleh ditulis dalam fail js dan diletakkan pada pelayan, dimuatkan ke dalam halaman menggunakan teg skrip, dan teg ini boleh dibuat secara dinamik.

Salin kod Kod adalah seperti berikut:

Kandungan remote.js adalah sama seperti yang ditulis dalam teg sebelum ini:


1 showPrice({simbol: 'IBM', harga: 91.42});
Kod JavaScript yang dimasukkan secara dinamik mengambil data JSON untuk dihantar sebagai parameter dan parameter pernyataan panggilan fungsi showPrice.

Jadi persoalannya, adakah fungsi showPrice perlu dipanggil setiap kali data diperoleh? Ini memerlukan pengaturcara bahagian hadapan dan belakang untuk membuat perjanjian Sudah tentu, ini akan menyebabkan banyak kesulitan, terutamanya apabila antara muka terbuka kepada pembangunan awam. JSOP diproses dengan cara ini: hujung hadapan disokong untuk menghantar parameter nama fungsi panggil balik, hujung belakang menerima parameter nama fungsi panggil balik, dan kemudian menjana panggilan ke fungsi, lulus data JSON sebagai parameter dan memasukkannya ke dalam halaman apabila ia mencapai klien untuk memulakan pelaksanaan.

Contoh 3:

Masukkan kod secara dinamik dengan parameter panggil balik:



Salin kod Kod adalah seperti berikut:

Coretan kod perkhidmatan JSONP yang dilaksanakan dalam PHP pada bahagian belakang:



Salin kod Kod adalah seperti berikut:
$jsonData = getDataAsJson($_GET['simbol']);
echo $_GET['callback'] . '(' . $jsonData . ');';
// Cetakan: showPrice({"symbol" : "IBM", "price" : "91.42"});

Ia sesuai dengan takrifan JSONP dan membungkus data JSON dalam panggilan fungsi.

Contoh di atas datang daripada:

Menggunakan JSONP untuk komunikasi merentas domain, Bahagian 1: Bina mashup berkuasa dengan cepat menggunakan JSONP dan jQuery


Menggunakan JSONP dengan jQuery
Kaedah panggilan AJAX dan JSONP dalam jQuery kelihatan sangat serupa. Jangan keliru dengan fenomena ini. AJAX memperoleh kandungan bukan halaman melalui objek XMLHttpRequest, manakala JSONP secara dinamik menambah tag Walaupun jQuery merangkum JSONP sebagai satu bentuk AJAX, JSONP bukanlah satu bentuk atau kes khas AJAX.


Salin kod Kod adalah seperti berikut:
$.ajax({
URL: "
http://query.yahooapis.com/v1/public/yql", jsonpCallback: "showPrice",
​ jsonp: "panggil balik",
// beritahu jQuery kami menjangkakan JSONP
Jenis Data: "jsonp",
Data: {
q: "pilih tajuk,abstrak,url daripada carian.berita di mana pertanyaan="kucing"",
format: "json"
},
// bekerja dengan respons
Kejayaan: fungsi(data) {
            console.log( data ); // respons pelayan
}
});

Perihalan parameter permintaan Ajax:

DataType String

Jenis data dijangka akan dikembalikan oleh pelayan. Jika tidak dinyatakan, jQuery secara automatik akan membuat pertimbangan pintar berdasarkan maklumat MIME pakej HTTP Contohnya, jenis XML XML diiktiraf sebagai XML. Dalam 1.4, JSON akan menjana objek JavaScript dan skrip akan melaksanakan skrip. Data yang dikembalikan oleh pelayan kemudiannya akan dihuraikan berdasarkan nilai ini dan dihantar ke fungsi panggil balik. Nilai yang tersedia:

"xml": Mengembalikan dokumen XML yang boleh diproses dengan jQuery.

"html": Mengembalikan maklumat HTML teks biasa; teg skrip yang disertakan akan dilaksanakan apabila dimasukkan ke dalam dom.

"skrip": Mengembalikan kod JavaScript teks biasa. Keputusan tidak dicache secara automatik. Melainkan parameter "cache" ditetapkan. '''Nota:''''Apabila membuat permintaan jauh (bukan di bawah domain yang sama), semua permintaan POST akan ditukar kepada permintaan GET. (Kerana teg skrip DOM akan digunakan untuk memuatkan)

"json": Mengembalikan data JSON.

"jsonp": format JSONP. Apabila memanggil fungsi menggunakan format JSONP, seperti "myurl?callback=?" secara automatik akan menggantikan ?

"teks": Mengembalikan rentetan teks biasa

jsonp,

Tulis semula nama fungsi panggil balik dalam permintaan jsonp. Nilai digunakan untuk menggantikan bahagian "panggilan balik" dalam parameter URL permintaan GET atau POST seperti "panggilan balik=?" Contohnya, {jsonp:'onJsonPLoad'} akan menyebabkan "onJsonPLoad" dihantar ke pelayan.

jsonpCallback,

Tentukan nama fungsi panggil balik untuk jsonp. Nilai ini akan digunakan dan bukannya nama fungsi rawak yang dijana secara automatik oleh jQuery. Ini digunakan terutamanya untuk membenarkan jQuery menjana nama fungsi unik supaya lebih mudah untuk mengurus permintaan dan menyediakan fungsi panggil balik dan pengendalian ralat. Anda juga boleh menentukan nama fungsi panggil balik ini apabila anda mahu penyemak imbas cache GET permintaan. Walau bagaimanapun, dalam penggunaan sebenar, tidak perlu menulis fungsi panggil balik, seperti showPrice dalam contoh ini, dan tiada ralat akan dilaporkan jika anda tidak menulisnya, kerana jQuery secara automatik menjana fungsi panggil balik untuk anda semasa memproses JSONP dan mengambil keluar data untuk memanggil kaedah kejayaan. Ia mungkin kelihatan seperti ini:

Salin kod Kod adalah seperti berikut:

function success_jsonpCallback(data) { success(data);
Di atas adalah keseluruhan kandungan artikel ini Adakah anda mempunyai pemahaman terperinci tentang jsonp? Jika anda mempunyai sebarang pertanyaan, sila tinggalkan saya mesej dan kita boleh membincangkannya bersama.

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
VUE3怎么使用JSON编辑器VUE3怎么使用JSON编辑器May 12, 2023 pm 05:34 PM

1、先看看效果图,可以自行选择展示效果2、这是我在vue3项目中使用的JSON编辑器,首先引入第三方插件npminstalljson-editor-vue3yarnaddjson-editor-vue33、引入到项目中//导入模块importJsonEditorVuefrom'json-editor-vue3'//注册组件components:{JsonEditorVue},4、一般后端返回的是会将JSON转为String形式我们传给后端也是通过这种形式,就可以通

SpringBoot之Json的序列化和反序列化问题怎么解决SpringBoot之Json的序列化和反序列化问题怎么解决May 12, 2023 pm 04:07 PM

控制json序列化/反序列化1.@JsonIgnoreProperties的用法@JsonIgnoreProperties(value={"prop1","prop2"})用来修饰Pojo类,在序列化和反序列化的时候忽略指定的属性,可以忽略一个或多个属性.@JsonIgnoreProperties(ignoreUnknown=true)用来修饰Pojo类,在反序列化的时候忽略那些无法被设置的属性,包括无法在构造子设置和没有对应的setter方法.2.@Js

Java怎么调用接口获取json数据解析后保存到数据库Java怎么调用接口获取json数据解析后保存到数据库May 14, 2023 am 10:58 AM

Java调用接口获取json数据保存到数据库1.在yml文件中配置自己定义的接口URL//自己定义的JSON接口URLblacklist_data_url:接口URL2.在Controller中添加请求方法和路径/***@Title:查询*@Description:查询车辆的记录*@Author:半度纳*@Date:2022/9/2717:33*/@GetMapping("/Blacklist")publicvoidselectBlacklist(){booleana=imB

深入解析JWT(JSON Web Token)的原理及用法深入解析JWT(JSON Web Token)的原理及用法Jan 10, 2023 am 10:55 AM

本篇文章给大家带来了关于JWT的相关知识,其中主要介绍了什么是JWT?JWT的原理以及用法是什么?感兴趣的朋友,下面一起来看一下吧,希望对大家有帮助。

java怎么校验json的格式是否符合要求java怎么校验json的格式是否符合要求May 15, 2023 pm 04:01 PM

JSONSchemaJSONSchema是用于验证JSON数据结构的强大工具,Schema可以理解为模式或者规则。JsonSchema定义了一套词汇和规则,这套词汇和规则用来定义Json元数据,且元数据也是通过Json数据形式表达的。Json元数据定义了Json数据需要满足的规范,规范包括成员、结构、类型、约束等。JSONSchema就是json的格式描述、定义、模板,有了他就可以生成任何符合要求的json数据json-schema-validator在java中,对json数据格式的校验,使用

php输出json无法解析的原因和解决方法【总结】php输出json无法解析的原因和解决方法【总结】Mar 23, 2023 pm 04:35 PM

PHP作为一种常见的编程语言,在web开发中使用广泛,其与前端交互的方式也多种多样。其中,输出Json数据是一种常见的交互方式,但有时候会碰到Json无法解析的问题。为什么会出现无法解析的情况呢?下面列举了几个可能的原因。

php如何将xml转为json格式?3种方法分享php如何将xml转为json格式?3种方法分享Mar 22, 2023 am 10:38 AM

当我们处理数据时经常会遇到将XML格式转换为JSON格式的需求。PHP有许多内置函数可以帮助我们执行这个操作。在本文中,我们将讨论将XML格式转换为JSON格式的不同方法。

SpringBoot怎么返回Json数据格式SpringBoot怎么返回Json数据格式May 19, 2023 pm 11:49 PM

一、@RestController注解在SpringBoot中的Controller中使用@RestController注解即可返回JSON格式的数据。@RestController注解包含了@Controller和@ResponseBody注解。@ResponseBody注解是将返回的数据结构转换为JSON格式。@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Controller@Respons

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).