全站搜索

PHP网站制作之curl来模拟ajax来发送数据

网站开发 339

ajax不管是post还是get传递数据的时候是什么样的形式传递数据呢?

如果我们用curl来模拟ajax来发送数据时候,我们构造的$data应该是怎样才是标准的呢?

1、首先最容易想到的是数组结果如$data=array(‘a’=>1,’b’=>2);

2、还会想到json数据格式如$data=json_encode(array(‘a’=>1,’b’=>2));

这上面的两个方式在接收端作了限制后都是不正确的。(大多数数据接口的方式);

标准的传递数据格式是:a=1&b=2

1.接收数据流

  function getRawData(){

        $put = array();

        parse_str(file_get_contents(‘php://input’), $put);

        return $put;

    }

 

  //实用函数

/* 获取与发送数据

 * $url 获取路地址

 * $postData传递数据数组形式

 * $isDebug 是否调试打印发送地址和发送数组

 * return 返回如果是字符则是字串,json格式则返回数组

*/

function curlHttp($url,$postData,$isDebug=false){

    $url=strstr($url,’http:’)?$url:C(‘HTTPURL’).$url;

    if($isDebug){dump($url);dump($postData);}//调试则输出发送的地址和发送的数据串

    $ch=curl_init();// 初始化

    //$header = array(‘Expect:’);

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。

    curl_setopt($ch, CURLOPT_HEADER, 0);//是否取得头信息

    curl_setopt($ch, CURLOPT_POST, true);//post提交方式

    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));//http_build_query自动构造url发送信息

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);//20秒连接超时

    //curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

    $data=curl_exec($ch);

    $toArray=json_decode($data,true);

    if(is_array($toArray)){

        $data=listToArray($toArray);

    }

    return $data;

}

/* 对curlHttp返回的list一维数组的如果含json串转为深度转换数组

 * $data一维数组,键值含有json字符串

 * return 返回一个标准的数组

 * */

function listToArray($data){

    $arr=array();

    foreach($data as $k=>$v){

        if(is_json($v)){

            $arr[$k]=listToArray(json_decode($v,true));

        }elseif(is_array($v)){

            $arr[$k]=listToArray($v);

        }else{

            $arr[$k]=$v;

        }

    }

    return $arr;

}

/* 判断数据是否为json数据 备注:json_decode对于数组和数字也会判定为json数据需要加上{的判定

 * $string字符串

 * return 返回true or false

 * */

function is_json($string) {

    $isjsonf=json_decode($string);

    $isjsont=strstr($string,'{‘);

    return ($isjsonf && $isjsont)?true:false;

}

 

前端ajax获取数据

 

 

<script>

$.ajax({

    url:”api接口地址”,

    type:’POST’,//参数方式

    dataType: “json”,//数据类型

    data:{“action”:1,”OrderID”:”112-2316089-0269002″,”MD5Key”: “55E9D105D116DBEC3E8285EB0F5C6404″‘},

    success:function (val) {

        console.log(val);

    },error:function(){

        alert(‘error’);

    }

})

 

上一篇: 下一篇:

相关推荐

  • 网站设计师提升用户体验的五条心理法则

    270

    是什么让用户在浏览网站时按下CTA按钮?用户体验设计和心理是紧密联系在一起的,多年来,心理学已经被证明有有效的研究方法,来帮助探索和描述人类行为。对于网站设计师而言,应用这些心理现象来创建更好的应用程序和网站是很有用处的。Zeigarnik法则:人们对未完成的...

    查看全文
  • 「点点seo」网络营销人员如何做好网站优化?

    275

      互联网的平台有多大,你知道吗?现在各行各业都在积极利用互联网这个大平台来做营销,尤其是一些生产企业,他们大多选择建立个人网站去宣传自己的品牌以及产品,这样可以吸引更多的客户。      可是同行业的竞争非常激烈,想要让自己的网站在各...

    查看全文
  • 浅谈翰林亿讯网站改版的见解

    379

      随着互联网的不断普及和技术提升,现在的人们 从 互联网 上 了解 公司 基本信息最直接的方式莫过于企业官方网站了,然而现在的人们随着审美的提高和 公司 的发展定位,很多企业的网站想把网站设计的更符合现代的潮流和企业的形象,企业的官方网站就需要进行不...

    查看全文
  • 2021新的一年网站网站改善目标和转化率目标如何实现?

    354

    网站改善是为了给网站获取更多的流量,转化率是为了赢得潜在访客的订单。这是任何一个网站极为重要的两个目标。在新的一年,网站的运营者和企业如何去实现这两个目标呢?网站如何实现网站改善目标?第一,使你的网站在移动上友好。 多年来,移动设备和台式机争夺了...

    查看全文
展开更多