ThinkPHP以jquery传送json数据格式的方式实现ajax请求

在之前我这里是失败过很多次的,有的时候甚至不得不采用get的传送方式,另外,thinkphp自带的ajax->return方法并不能够解决问题,而且会让问题变得更加复杂,与其不如直接使用jquery的方法,全部采用post提交的方式,get提交是没有任何的问题的,但是post提交问题就一个接一个。我就一直纳闷,为什么在但一脱离框架的页面就能够畅通无阻,这个问题非常的棘手。研究了好长时间终于发现问题所在了,jquery只是前端性的东西基本上和框架扯不上太大的关系,下面是对该问题的总结:

1:

不要有from表单,他可能会自动的提交,不会有ajax的效果。

2:

url格式要正确:如:

var url=”{$smarty.const.SET_URL}index.php/Admin/Test/add”;

3:

json数据格式要正确,不能说算正确,还少我就发现这一种json写法可以实现,但是json有其他的写法,这个非常重要,一定不能写错,如:

var send_data={
                "username" : username
                };

每一行换行都是有道理的!

4:以post的方式接收,如username=_POST[‘username’];

5:返回json数据:这里就不用换行了,因为JavaScript和php的json书写方式还是有一些不同的。

6:客户端接收ajax返回的数据:

返回的是json数据,必须用eval转化为对象的格式才能使用,如 json_data=eval(“(“+data+”)”);

7:就是使用了,这个就是自己的事情了。

下面是一份实例代码:

客户端代码:

<!DOCTYPE HTML>
<html>
    <head>
        <title>测试ajax</title>
        <script type="text/javascript" src="{$smarty.const.JS_URL}jquery.js"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $("#sub").click(function(){

                    var username=$("#username").val();
                    var password=$("#password").val();

                    var url="{$smarty.const.SET_URL}index.php/Admin/Test/add";
                    var send_data={
                                       "username" : username
                                    };

                    $(document).load(url,send_data,function(data,status,httprequest){
                        var json_data=eval("("+data+")");
                        $("#get_data").text(json_data.data2);
                    });
                });
            });
        </script>
    </head>
    <body>
        <h1>Ajax测试</h1>
        <!-- <form action="{$smarty.const.__SELF__}" method="post"> -->
            用户名:<input type="text" name="username" id="username"><br>
            密 码:<input type="password" name="password" id="password"><br/>
            <button id="sub">提交测试</button>
            <div id="get_data"></div>
        <!--  </form>-->
    </body>
</html>

服务器的代码:

public function add(){

        $username=$_POST[‘username‘];
        if($username=="xuning"){
            echo "{‘data1‘:‘1111‘,‘data2‘:‘222‘}";
        }else{
            echo "xuning";
        }
    }
时间: 2024-08-04 09:44:09

ThinkPHP以jquery传送json数据格式的方式实现ajax请求的相关文章

利用jQuery传送json格式的字符串,后端用ashx文件来接收

在Default.aspx里面,我们会透过javascript建立两个物件,分别有Name和Age的属性,再透过Array的方式,将这两个物件塞到Array里面去.使用Ajax内建的$.ajax API,我们可以把url,type,data,sucess等几个属性先设定好,其中要注意到当我们想透过json格式来传递资料的时候,我们可以用JSON.stringify()的方法来把想要传送的阵列资料先转换成json格式. 1 <%@ Page Language="C#" AutoEv

jquery的post方式发送AJAX请求

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="content-type" content='text/html;charset=utf-8'> 5 <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js" ></script> 6 <title>&

AngularJs中POST和GET方式的ajax请求

angular中ajax请求的方法说明: /* * _http:angularJs中的$http对象 * _url:ajax请求的URL * _method:请求方式:POST或GET * _params:GET方式请求时传递的参数 * _data:POST方式请求时传递的参数 * _responseType:在请求中设置XMLHttpRequestResponseType属性,""(字符串,默认), * "arraybuffer"(ArrayBuffer);&qu

JQuery使用deferreds串行多个ajax请求

使用JQuery对多个ajax请求串行执行. HTML代码: <a href="#">Click me!</a> <div></div> JS: function GetSomeDeferredStuff() { var deferreds = []; var i = 1; for (i = 1; i <= 10; i++) { var count = i; deferreds.push( $.post('/echo/html/',

jquery的get方式发送AJAX请求

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="content-type" content='text/html;charset=utf-8'> 5 <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js" ></script> 6 <title>&

jquery的ajax方式发送AJAX请求

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="content-type" content="text/html;charset=utf-8" > 5 <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js" ></script> 6 <

jquery select2 4.0版本中,ajax请求数据无法选中

需要在processResults处理新增Id处理 var results = []; $.each(data.items, function (i, v) { var o = {}; o.id = v.itemId; o.name = v.itemName; o.value = v.itemId; results.push(o); }) return { results: results };

AJAX-----05XMLHttpRequest对象的用post方式进行ajax请求

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <script> function createXHR(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpR

jquery解析json格式数据的方法(对象、字符串)

相关函数 函数 描述 JSON.parse() 用于将一个 JSON 字符串转换为 JavaScript 对象. JSON.stringify() 用于将 JavaScript 值转换为 JSON 字符串. //data为字符串类型 则要将字符串类型转换成json数据类型 var jsondatas=eval("("+data+")"); 本文实例讲述了jquery解析json格式数据的方法.分享给大家供大家参考,具体如下: json数据是我们常用的一种小型的数据实