JS----Jsonp 简单使用

Jsonp 简单使用

客户端 - 直接提交:getJSON:

$.getJSON("http://127.0.0.1/test.php?jsoncallback=?&t=5555&name=jack", function(data){
    console.log(data)
    console.log(data.name)  
})

客户端 - ajax提交:

$('#form').on('submit', function(event) {
    window.event.returnValue = false;

    $.ajax({
        url: "http://127.0.0.1/test/t1.php?t=5555",       // 服务器地址要注意是ipv4的,ipv6测试暂时没成功。
        data:{name:'jack', age:$("[name='age']").val()},  // 传递数据
        type: "POST",                                     // get/post都可以的请求方式
        async: false,                                     // 是否同步,false为异步加载        
        dataType: "jsonp",                                // 设置返回数据类型jsonp      
        jsonp: "jsoncallback",                            // jsonp的字段,服务器返回的前缀要和这个一样
        success: function (data) {
            console.log(data)   
            // console.log(data[0].name)

            // 取数据:遍历数据
            var ul = '<ul>';
            // data为获取的数据,记得给服务器设置charset=utf-8;否则返回中文乱码
            $.each(data, function (i, v) {
                ul += '<li>' + v.name + '</li>';
            });

            ul +='</ul>';


            $("#result").append(ul);

        },
        error: function () {
            console.log('fail');
        }
    });
})

服务端:

header("Content-type:text/html;charset=utf-8");

// htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
// 获取回调函数名
$jsoncallback = isset($_REQUEST['jsoncallback']) ? htmlspecialchars($_REQUEST['jsoncallback']) : '';

// 方式1:json数据
$jsonData1 = '[{name:"jack"},{name:"tom"}]';

// 方式2:获取数据. 主意要为$_GET
$jsonData2 = json_encode($_GET);

// 输出json数据
echo $jsoncallback . "(" . $jsonData1 . ")";
### Vue3 中使用 JSONP 实现跨域请求 对于在 Vue3 项目中实现 JSONP 请求来处理跨域问题,可以采用 `vue-jsonp` 组件。该组件能够简化 JSONP 的调用流程,并提供更好的错误处理机制。 #### 安装依赖包 为了能够在 Vue3 工程中利用 JSONP 进行数据交互,首先需要通过 npm 或 yarn 来安装 `vue-jsonp` 插件: ```bash npm install vue-jsonp --save ``` 或者如果更倾向于使用 yarn,则执行如下命令: ```bash yarn add vue-jsonp ``` #### 导入并注册插件 接着,在项目的入口文件 main.js 中引入 `vue-jsonp` 并将其作为全局插件注册: ```javascript // main.js import { createApp } from 'vue' import App from './App.vue' import VueJsonp from 'vue-jsonp' const app = createApp(App) app.use(VueJsonp) app.mount('#app') ``` 注意这里采用了 ES6 解构语法从 `vue-jsonp` 中解构出默认导出对象[^4]。 #### 发起 JSONP 请求 当一切准备就绪之后,便可以在任何 `.vue` 文件内的 JavaScript 方法部分发起 JSONP 请求了。下面是一个简单的例子展示如何发送 GET 请求以及接收响应的数据: ```javascript export default { name: 'ExampleComponent', methods: { fetchData() { const url = 'https://example.com/api'; const params = { param1: value1, param2: value2 }; this.$jsonp(url, params).then(response => { console.log('Success:', response); }).catch(error => { console.error('Error occurred during JSONP request.', error); }); } }, } ``` 上述代码片段展示了如何定义一个名为 `fetchData()` 的方法用于触发 JSONP 请求,并且包含了成功的回调函数用来打印服务器端返回的结果,同时也设置了捕获异常情况下的错误日志输出[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值