用的比較多的jquery+ajax方法是$.post,它也是對$.ajax的二次封裝,那麼接下裡看看$.ajxa的使用:
代碼如下 |
複製代碼 |
$('#ajax').click(function(){ $.ajax({ type:'post', url:'test.php', dateType:'html',//支援htmlxmljsonjsonp data:{domain:'www.111cn.net',keyword:'php部落格'}, success:function(response,status,xhr){ console.log('success:'+response); }, error:function(response,status,xhr){ console.log('error:'+response) } }); });
|
其中jsonp,跨域的操作請查看文章:php+jquery+jsonp實現ajax跨域問題
在表單提交的時候,可能資料比較多那樣的話data:{}裡面的參數會非常的多,而且容易出錯,那麼就用到了form的序列化serialize()
代碼如下 |
複製代碼 |
$('.btn').click(function(){ $.ajax({ type:'post', url:'test.php', dateType:'json',//支援htmlxmljsonjsonp data:$('form').serialize(),//success:{"user":"tuisiyuan","email":"1054770532@qq.com"} //data:$('form').serializeArray(),//success:{"user":"tuisiyuan","email":"1054770532@qq.com"} success:function(response,status,xhr){ console.log('success:'+response); }, error:function(response,status,xhr){ console.log('error:'+response) } }); }); |
php中serialize截圖:
php中serializeArray截圖:
由上看出在php端對資料的處理,serialize和serializeArray基本沒啥區別。
還有一個不太常用但是比較有用的方法,那就是ajax資料初始化的方法:$.ajaxSetup對重複資料的初始化
$.ajaxSetup({//初始化共同的資料,使代碼不出現過多的重複現象
代碼如下 |
複製代碼 |
type:'post', url:'test.php' }); |
補充:jsonp實現ajax跨域請求
首先我在本地一個網域名稱下載入以下代碼:
代碼如下 |
複製代碼 |
<scripttype="text/javascript"src="http://www.lshop.com/js/test.js"></script> 然後我在www.lshop.com中的js的test.js中貼上jsonp的代碼: $.ajax({ type:"get", async:false, url:'http://www.111cn.net/ index.php', dataType:"jsonp", //jsonp:"callback",//傳遞給請求處理常式或頁面的,用以獲得jsonp回呼函數名的參數名(一般預設為:callback) jsonpCallback:"flightHandler",//php中傳回值的時候需要包裹返回資料的函數 success:function(json){ alert('我的關鍵字是:'+json.stitle); }, error:function(){ alert('fail'); } }); |
php端的代碼:
代碼如下 |
複製代碼 |
$a=json_encode(array('title'=>'IT部落格','stitle'=>'javascript部落格')); echo"flightHandler($a)"; exit; |
得到的結果是:彈出—我的關鍵字是:javascript部落格。