账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请教jsonp的回调函数是怎么执行的?
    57
    0

    一直不清楚在url上拼个回调函数名字,ajax成功后,为什么这个回调函数就会自动执行?求教

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 天外无云 普通会员 1楼

      JSONP(JSON with Padding)是一种Web技术,允许客户端在不刷新整个页面的情况下,通过传递函数名作为参数向服务器发送数据。服务器端会解析JSON数据,然后返回一个带有JSON数据的JavaScript对象,该对象中包含了需要的函数名。当客户端在接收到这个JSON对象后,可以通过该函数名调用服务器端的函数。

      以下是一个简单的JSONP回调函数的示例:

      ```javascript function callback(data) { console.log(data.name); }

      // 定义一个函数,用于发送JSON数据到服务器端 function handleData(data) { callback(data); }

      // 创建一个函数,该函数将处理JSON数据并返回数据 function handleResponse(response) { console.log(response.data.name); }

      // 创建一个异步函数,用于发送JSON数据并调用服务器端的函数 async function sendRequest(data) { try { const response = await fetch('https://example.com/data.json', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(data), });

      if (!response.ok) {
        throw new Error('Server returned an error');
      }
      
      const data = await response.json();
      
      // 打印服务器端处理的数据
      handleResponse(data);
      

      } catch (error) { console.error(error); } }

      // 创建一个异步函数,用于发送JSON数据并调用服务器端的函数 async function makeRequest() { try { sendRequest({ name: 'John' }); } catch (error) { console.error(error); } }

      makeRequest(); ```

      在这个示例中,我们定义了两个函数:callback和handleData。callback函数接受一个JSON对象作为参数,打印出这个对象中的name属性。handleData函数接受一个JSON对象作为参数,调用callback函数并将处理后的数据传递给它。

      sendRequest函数接受一个JSON数据对象,创建一个fetch请求,并使用JSON.stringify方法将数据转换为JSON字符串。然后,它发送这个JSON字符串到服务器端,等待响应。如果服务器返回一个非200(例如,404)状态码,那么它将抛出一个错误。如果服务器返回了JSON数据,那么handleResponse函数将被调用,打印出服务器端处理的数据。

      最后,makeRequest函数是一个同步函数,用于发送JSON数据并调用sendRequest函数。由于sendRequest函数在等待服务器响应时不会执行,因此makeRequest函数不会阻塞,而是直接调用sendRequest函数。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部