㈠ php 怎麼使用ajax,給個例子
實現ajax需要三個文件,一個是html的表單文件,一個是js的核心文件,一個是php的後台文件。
下面的是html文件,當鍵盤按下時觸發showHint方法,在showHint方法中會有ajax的核心內容,實例化,獲取地址,獲取數據並展示等等。
復制代碼 代碼如下:
<html>
<head>
<script src="clienthint.js"></script>
</head>
<body>
<form>
First Name:
<input type="text" id="txt1"
onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>
</body>
</html>
下面是js的內容clienthint.js。
復制代碼 代碼如下:
var xmlHttp
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML=""
return
}
//獲取xmlHttpObject對象,如果為空,提示瀏覽器不支持ajax
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
//獲取url
var url="gethint.php"
url=url+"?q="+str
url=url+"&sid="+Math.random()
//回調函數,執行動作
xmlHttp.onreadystatechange=stateChanged
//open
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
//將獲取的信息插入到txtHint中
document.getElementById("txtHint").innerHTML=xmlHttp.responseText
}
}
//獲取xml對象
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
下面是php的內容。根據ajax對象傳入的參數,獲取相應的數據。
復制代碼 代碼如下:
<?php
// Fill up array with names
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
$a[]="Eva";
$a[]="Fiona";
$a[]="Gunda";
$a[]="Hege";
$a[]="Inga";
$a[]="Johanna";
$a[]="Jiqing";
$a[]="Kitty";
$a[]="Linda";
$a[]="Nina";
$a[]="Ophelia";
$a[]="Petunia";
$a[]="Amanda";
$a[]="Raquel";
$a[]="Cindy";
$a[]="Doris";
$a[]="Eve";
$a[]="Evita";
$a[]="Sunniva";
$a[]="Tove";
$a[]="Unni";
$a[]="Violet";
$a[]="Liza";
$a[]="Elizabeth";
$a[]="Ellen";
$a[]="Wenche";
$a[]="Vicky";
//get the q parameter from URL
$q=$_GET["q"];
//lookup all hints from array if length of q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint=="")
{
$hint=$a[$i];
}
else
{
$hint=$hint." , ".$a[$i];
}
}
}
}
//Set output to "no suggestion" if no hint were found
//or to the correct values
if ($hint == "")
{
$response="no suggestion";
}
else
{
$response=$hint;
}
//output the response
echo $response;
?>
㈡ PHP怎樣抓取網頁代碼中動態(Ajax)顯示的數據
你是想抓別人網頁上ajax動態載入的數據吧? 1、要找到它的ajax載入的URL地址 2、利用PHP的file_get_contents($url)函數讀取那個url地址。 3、對抓取到的內容進行分析或正則過濾。
㈢ php如何獲取jquery ajax傳遞過來的值
程序如下:
if ($_REQUEST['act'] == 'c**ignee_list')
{
/*
* 檢查用戶是否選擇匿名購物
*/
if (isset($_REQUEST['direct_shopping']))
{
$_SESSION['direct_shopping'] = 1;
}/*
* 檢查用戶是否已經登錄
* 如果用戶已經登錄了則檢查是否有默認的收貨地址
* 如果沒有登錄則跳轉到登錄和注冊頁面
*/
if (empty($_SESSION['direct_shopping']) && $_SESSION['user_id'] == 0)
{
/* 用戶沒有登錄且沒有選定匿名購物,轉向到登錄頁面 */
$result['error'] = 1;
$result['message'] = '對不起,您沒有登錄或者您未選擇匿名購物!';
echo $json->encode($result);
exit;
}
}
echo $json->encode($result);
$('#addr_modify').click(function(){
$.ajax({
type: "POST",
url: "flow_ajax.php?act=c**ignee_list",
cache: false,
data: "&m=" + Math.random(),
beforeSend:function(){$('#addr_modify').html('[獲取中...]')},
success:function(data){
re = $.evalJSON(data);
alert(re.message);
if(re.error == 1)
{
alert(re.message);
window.location.href="flow.php?step=cart" + "&m=" + Math.random();
return;
}
else if(re.error == 2)
{
alert(re.message);
window.location.href="flow.php?step=c**ignee";
return;
}
$('#addr_modify').hide();
$('#addr_okbox').hide();
$('#addr_editbox').show();
// $('#addr_editbox').html(re.content_list);
// $('#addr_edit_table').html(re.content_table);
}
})
});
㈣ thinkphp怎樣獲取ajax請求數據
一般將前台頁面搜索結果中,不喜歡的內容(鏈接),刪除掉,因為整個網站的編程框架式thinkphp,運用js中的ajax對頁面進行響應,調用後台php介面,實現前台和後台資料庫的同時更新.
首先我們需要做的就是在前台頁面中添加一個文本「刪除」,可以這么添加:
代碼如下:
<a href="javascript:void(0);" id= "<php>echo $val[id]</php>" class="delete" >刪除</a>
上面的html代碼的意思:就是給刪除添加一個href,這個href是個js函數,類似於超鏈接的作用,當然對於我這樣的新手在剛開始的時候會有疑惑,我們平時的超鏈接不是這樣的,網頁中很多的javascript:void(0),那程序怎麼知道用戶點擊刪除後,會響應其真正對應的js函數呢?別急,這就是為什麼會為刪除添加id以及class這樣的標簽,相信我把js中的代碼公布出來以後你就會明白了,代碼如下:
jQuery(".list a.delete").click(function(){
if(confirm("你確定要刪除嗎?")){
var _this=this;
var id = jQuery(_this).attr("id");
jQuery.ajax({
url : '/Search/index.php/Jason/delete?',
data : {'id':id},
dataType : 'json',
success : function(data){
var del = data.del;
if(del == 1){//刪除成功
jQuery("#"+id).parents(".list").remove();
}else{//刪除失敗
alert("刪除失敗");
}
}
});
}
});
大家看函數的頭部:jQuery(".list a.delete").click(),jQuery後面的標簽是很重要的,這就保證了jquery很准確的響應頁面中用戶點擊的「位置」,添加的事件為click(),在click里添加響應事件的代碼:var id = jQuery(_this).attr("id");獲取a對應的id,因為這個id是我們刪除資料庫時用到的鏈接id,當然這種直接明文的方式不好,在這里只是介紹整個響應過程。調用ajax,實現非同步的運行整個過程。我們設置了js接受的是json串,這里的方式應該有很多種吧,我沒有去嘗試,大家要是有興趣可以自行嘗試一下。/Search/index.php/Jason/delete?這句話就是js去請求php的介面,php介面對用的代碼如下:
注意ajax在求php介面時的路徑,也就是delete函數必須放在JasonAction.class.php中,此例子是必須這樣的:
代碼如下:
public function delete(){
if($this->isGet()){
$userId = session("uid");//用戶登錄
if(!empty($userId)){
$a = M('***');
$id = $this->_get('id');
$result=$a->where("id=$id")->delete();//刪除
if($result > 0){
$arr = array("del"=>'1');
}else{
$arr = array("del"=>'0');
}
$json_str = json_encode($arr);
echo $json_str;//返回給js
}
}
}
相信大家對上面的代碼不會陌生吧,整個過程都是thinkphp框架內部配置完畢的.
var del = data.del;這句是接受php代碼返回來的json串中del這個key的value,進而在前台進行頁面更新和響應.
復制代碼代碼如下:
if(del == 1){//刪除成功
jQuery("#"+id).parents(".list").remove();//這句話就是後台刪除成功後,直接在前台對響應的div進行刪除,這樣性能就會很快,無需進行後台數據的重新提取至前台頁面中,
}else{//刪除失敗
alert("刪除失敗");
}
整個響應的過程就是這樣,至於效果優化,是優化和細化方面的問題,後來,身邊的同事又告訴我前台移除響應鏈接的另一個動態效果:
即將:
代碼如下:
jQuery("#"+id).parents(".list").remove();
替換為:
代碼如下:
jQuery("#"+id).parents(".list").slideUp("slow", function(){
jQuery(this).remove();
});
㈤ 如何通過php的curl模擬ajax請求,獲取其返回值
這個需要配合js,打開一個html頁面,首先js用ajax請求頁面,返回第一個頁面信息確定處理完畢(ajax有強制同步功能),ajax再訪問第二個頁面。(或者根據伺服器狀況,你可以同時提交幾個URL,跑幾個相同的頁面)
參數可以由js產生並傳遞url,php後台頁面根據URL抓頁面。然後ajax通過php,在資料庫或者是哪裡設一個標量,標明檢測到哪裡。由於前台的html頁面執行多少時候都沒問題,這樣php的內存限制和執行時間限制就解決了。
因為不會浪費大量的資源用一個頁面來跑一個瞬間500次的for循環了。(你的500次for循環死了原因可能是獲取的數據太多,大過了php限制的內存)
不過印象中curl好像也有強制同步的選項,就是等待一個抓取後再執行下一步。但是這個500次都是用一個頁面線程處理,也就是說肯定會遠遠大於30秒的默認執行時間。
㈥ PHP怎麼接收jQuery的Ajax post過來的值
1、首先安裝配置php集成環境。以phpstudy為例。
㈦ 重點只有一個:php如何獲取ajax函數傳來的data值
$sql="INSERTINTOusers(username,psw)VALUES($_POST['username'],$_POST['psw'])";
當然會發生PHP的解析錯誤。
在php里,把$_POST['username']這種東西放進雙引號字元串里,如"hi, $_POST['name']",無法被識別。常見的是"hi, $name",這樣可以。
要想實現把$_POST數組中的值插入SQL語句有多種方法。
1.PHP的字元串串接操作符即「點」號(注意:sql中字元串要加引號)
$sql="INSERTINTOusers(username,psw)VALUES('".$_POST['username']."','".$_POST['psw']."')";
2.
$sql="INSERTINTOusers(username,psw)VALUES('{$_POST['username']}','{$_POST['psw']}')";
3.prepared statement。較復雜但是安全。
4.字元串格式化函數sprintf
$sql=sprintf("INSERTINTOusers(username,psw)VALUES('%s','%s')",$_POST['username'],$_POST['psw']);
提醒:直接向sql語句中插入$_POST數組中的這些值而不經過轉義會讓網頁存在極嚴重的SQL注入漏洞!解決方法:傳統方法是用mysql_real_escape_string,現代方法是用prepared statement。
不懂請追問,滿意請採納。
補充,你的前端似乎還有問題。dataString 里直接插入ousername和opsw可能有問題。可能應該先經過url轉義。我記得jquery的ajax可以直接post一個json字典,這樣應該更好。
㈧ 怎樣用PHP獲取Ajax的send方法發送的內容
正常情況下載php中用$_POST['make'],$_POST[model]得到
現在如果你不搞ajax研究,只是使用的話,用jquery中的.ajax函數就可以
用法是這樣的
function myajax(ajaxurl,para){
//ajax提交函數
$('#LoadingStatus').show();//顯示進度條
$.ajax({
url: ajaxurl,
type: 'POST',
dataType: 'html',
timeout: 20000,//超時時間設定
data:para,//參數設置
beforeSend: function(XMLHttpRequest){
},
error: function(){alert('error');$('#LoadingStatus').hide(2000);},//錯誤處理,隱藏進度條
success: function(html){
//載入成功處理
$('#LoadingStatus').hide(2000,function(){ alert(html); });
//$('#msg').html(html);
}
});
juery手冊下載地址:http://codefans.net:86/7/200812/jquery-API_CHM.rar
}
㈨ PHP怎樣抓取網頁代碼中動態(Ajax
你是想抓別人網頁上ajax動態載入的數據吧?
1、要找到它的ajax載入的URL地址
2、利用PHP的file_get_contents($url)函數讀取那個url地址。
3、對抓取到的內容進行分析或正則過濾。