jsoncallback php 没有采用任何框架,只是使用了smarty模版,来渲染后端php响应的数据,在一个html文件中有如下实现

jsoncallback php 没有采用任何框架,只是使用了smarty模版,来渲染后端php响应的数据,在一个html文件中有如下实现

缘由:为了更好的体验组件优良的协程Mysql客户端,实现更好的并发设计;写了一个小程序。

环境准备:

没有采用任何框架,只是使用了模版,来渲染后端php响应的数据,在一个html文件中有如下实现

<html lang="en">

<meta charset="utf-8">
<meta name="viewport"
    content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta http-equiv="Access-Control-Allow-Origin" content="*" />
<meta name="author"
    content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
<meta name="generator" content="Jekyll v3.8.5">
老板控制台
<link rel="canonical"
    href="https://v4ing.bootcss.com/docs/4.3/examples/dashboard/">

<link href="http://staticsrc.cn:8888/bootstrap.css" rel="stylesheet">
......省略若干html代码
            <main role="main" class="col-md-9 ml-sm-auto col-lg-10 px-4">
                <div
                    class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3">
                    
<h2 01class="h2">添加新订单项目<span id="hintword"> <div class="btn-toolbar mb-2 mb-md-0"> <div class="btn-group mr-2"> <button type="button" class="btn btn-sm btn-outline-secondary">Share <button type="button" class="btn btn-sm btn-outline-secondary">Export
<button type="button" class="btn btn-sm btn-outline-secondary dropdown-toggle"> <span data-feather="calendar"> This week
<div class="row"> <div class="col-md-4 mb-3"> <label for="item">项目编码(字母) <input type="text" class="form-control" id="colname" placeholder="" value="" required> <div class="invalid-feedback"> Valid first name is required.
<div class="col-md-4 mb-3"> <label for="colname">项目名称(中文描述) <input type="text" class="form-control" id="comment" placeholder="" value="" required> <div class="invalid-feedback"> Valid last name is required.
<div class="row"> <div class="col-md-4 mb-3"> <label for="comment">明细分类 <select class="custom-select d-block w-100" id="mxname" required> <option value="incomedoc_mx">明细 <option value="incomedoc">表头 </select> <div class="invalid-feedback"> Please select a valid country.
<div class="col-md-4 mb-3"> <label for="mxbz">分类标记 <select class="custom-select d-block w-100" id="mxbz" required> <option value="s">明细从表 <option value="m">明细主表 <option value="h">表头 </select> <div class="invalid-feedback"> Please provide a valid state. <div class="row"> <div class="col-md-8 mb-3"> <label for="state"> <button class="btn btn-primary btn-lg btn-block" onclick="postclick();" type="button">提交 <!-- <canvas class="my-4 w-100" id="myChart" width="900" height="380"> --> <script src="http://staticsrc.cn:8888/jquery-3.4.1.min.js"> <script src="../../jsconfig.js"> function postclick() { $.getJSON("http://127.0.0.1:9501?jsoncallback=?", function(data) { $('#hintword').html(data); }); }

原计划点击提交按钮后,由函数()将请求提交给一.php文件处理,这个php文件逻辑实现大致如下(伪代码):

<?php
 go(function(){
    //'若干逻辑实现.......'
    echo $request->get['jsoncallback']
    //'若干逻辑实现.......'
});
?>

但是jsoncallback php 没有采用任何框架,只是使用了smarty模版,来渲染后端php响应的数据,在一个html文件中有如下实现,非常不幸…….浏览器端接连提示500错误jsoncallback phpjsoncallback php,但php文件单独执行,并没报错,看来库无法通过这种常规的技术手段简单的嵌入html代码

受到一个小"骚"友的启发,(他用SwooleHttpServer实现了mysql的连接池),可我渴求成功的欲火难耐,于是准备试试SwooleHttpServer包裹Mysql客户端协程的处理方案

<?php
require('../../../config.php');
use SwooleCoroutine as co;
//echo $_POST['colname'];
$result='';
$http = new SwooleHttpServer("http://ryanbackdb.com", 9501);
$http->on('request', function ($request, $response) {
    //var_dump($request);
    $response->header('Access-Control-Allow-Origin', '*');#这行尤其重要,服务器必须允许跨域访问
    $response->header('Content-Type', 'application/json');
    $jsoncallback = htmlspecialchars($request->get['jsoncallback']);#获取jquery跨域路由中jsoncallback的部分
    go(function () use($response,$jsoncallback){#逻辑部分可以根据实际业务需要编写
        $json_data = '["customername1","customername2"]';
        //$response->write($_callback."(".$data.")");
        $response->write($jsoncallback . "(" . $json_data . ")");#返回处理后的结果
        $response->end();
    });
});
$http->start();

写好后就运行了,没错,这样一来jsoncallback php 没有采用任何框架,只是使用了smarty模版,来渲染后端php响应的数据,在一个html文件中有如下实现,在9501端口上就运行了一个http服务器,我们根据实际需求可以继续丰富功能,例如根据路由的不同,编写不同的协程完成不同的功能,当然,这样一来就违反了同源策略jsoncallback php,需要跨域处理

<?php
$http = new SwooleHttpServer("127.0.0.1",9501);
$http->on('request',function ($request,$response){
    $params = $request->get;
    var_dump($params);
    $response->header('Access-Control-Allow-Origin', '*');
    $jsoncallbacks = htmlspecialchars($request->get['jsonpCallback']);
    echo "这里是回调函数的名字";
    var_dump($jsoncallbacks);
    go(function () use($jsoncallbacks,$response){
        $json_data = '["customername1","customername2"]';
        $response->write($jsoncallbacks . "(" . $json_data . ")");
        $response->end();
    });
});
$http->start();
?>

    function postclick()
        {
            $.ajax({
                method:"POST",
                url:"http://127.0.0.1:9501/",
                data:{'colname':$("#colname").val(),'comment':$("#comment").val(),'mxname':$("#mxname").val(),'mxbz':$("#mxbz").val()},//好像不支持formdata,浏览器控制台,后端日志不报错,但是后台程序无法获取提交的数据
                dataType: "jsonp",
                jsonp: "jsonpCallback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
                jsonpCallback: "duwa",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
                success:data =>{
                    console.log("这里的data乃是回调函数的名字: "+data)
                },
                error:error =>{
                    console.log(`error为${error.data}`)
                }
            })
        }

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » jsoncallback php 没有采用任何框架,只是使用了smarty模版,来渲染后端php响应的数据,在一个html文件中有如下实现

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。
分享到:

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们