我正在使用PHP创建一个小型网站,这通常是展示某个商店产品的网站。该网站具有用户可以创建他/她的帐户,登录,然后他/她应该能够支持将他们喜欢的任何产品添加到他们自己的愿望清单的功能。然后,当他们查看他们的愿望清单(可以管理)时,应该显示受欢迎的产品。
我正在寻找一种方法,如果用户点击产品上的收藏夹按钮,那么该产品应该受到青睐,而不会重新加载页面。我知道我们应该使用AJAX但是怎么样?
我在下面给出的网站有我试图解释的功能(但他们需要注册)。
注意:对不起,如果这是一个非常愚蠢的问题,我只是一个初学者:)
答案 0 :(得分:0)
在php中编写一个简单的脚本,将项目添加到收藏夹,同时这样做可以假设项目ID将通过$ _REQUEST传递。这应该是一个简短的脚本,只将项目添加到收藏夹并返回成功或错误,通常在json中。 Json可以使用json_encode()
在php中编码,并且可以使用JSON.parse()
在js中解码。
当我第一次使用Ajax时,这个花絮得到了帮助。 Ajax只是在浏览器中使用js或jQuery来打开php页面而不加载实际的网页。这非常有用,因为您可以在不重新加载网页的情况下与服务器进行数据通信。
答案 1 :(得分:0)
Ajax简单的步骤: 0.添加ajax代码 你可以使用谷歌的mini ajax:
使用Javascript:
function $(e){if(typeof e=='string')e=document.getElementById(e);return e};
function collect(a,f){var n=[];for(var i=0;i<a.length;i++){var v=f(a[i]);
if(v!=null)n.push(v)}return n};
ajax={};
ajax.x=function(){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(e)
{try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e)
{return new XMLHttpRequest()}}};
ajax.serialize=function(f){var g=function(n){return f.getElementsByTagName(n)};
var nv=function(e){if(e.name)return encodeURIComponent(e.name)
+'='+encodeURIComponent(e.value);else return ''};var i=collect(g('input'),function(i){if((i.type!='radio'&&i.type!='checkbox')||i.checked)return nv(i)});var s=collect(g('select'),nv);var t=collect(g('textarea'),nv);return i.concat(s).concat(t).join('&');};
ajax.send=function(u,f,m,a){var x=ajax.x();x.open(m,u,true);x.onreadystatechange=function(){if(x.readyState==4)f(x.responseText)};if(m=='POST')x.setRequestHeader('Content-type','application/x-www-form-urlencoded');x.send(a)};
ajax.get=function(url,func){ajax.send(url,func,'GET')};
ajax.gets=function(url){var x=ajax.x();x.open('GET',url,false);x.send(null);return x.responseText};
ajax.post=function(url,func,args){ajax.send(url,func,'POST',args)};
ajax.update=function(url,elm){var e=$(elm);var f=function(r){e.innerHTML=r};ajax.get(url,f)};
ajax.submit=function(url,elm,frm){var e=$(elm);var f=function(r){e.innerHTML=r};ajax.post(url,f,ajax.serialize(frm))};
创建使用ajax替换自己内容的页面元素
在HTML中使用mini ajax将ProdFav元素的内容替换为ajax.php生成的内容(如下所述):
<div id="ProdFav">
<a href="#fav" onclick="ajax.update(urlROOT + 'ajax.php?action=ProdFavs&prod_id=' + prod_id + '&state=on', 'ProdFav'); return false;"><span class="dis">Make favorite</span></a>
</div>
创建php以提供新内容 ajax.php使用action和prod_id参数为ProdFav html元素创建新内容:
PHP:
echo '
<a href="#fav"
onclick="ajax.update(urlROOT + \'ajax.php?action=ProdFavs&prod_id=\' + '
.intval($_GET['prod_id'])
.' + \'&state=off\', \'ProdFav\'); return false;">
<span class="dis">Remove favorite</span>
</a>';