PDA

View Full Version : سوال: درخواست یک کار ساده با ajax و php



Mohammad-tashi
جمعه 18 دی 1394, 16:55 عصر
سلام دوستان عزیز
من یک فروشگاه دارم میخام زیر هر محصول یک لینک خرید باشه و کاربر وقتی روش کلیک کرد بدون روفرش شدن صفحه آیدی محصول رو بگیره بفرسته به صفحه add.php و توی اون صفحه اون آیدی به سشن اضافه بشه و صفحه فعلی دایو نمایش سبد خرید آپدیت بشه و محصولات موجود رو چاپ کنه

صفحه add رو خودم نوشتم
چاپ محصولات موجود در سشن سبد رو هم نوشتم

فقط نمیدونم چطور میشه با "لینک" یک مقدار رو post کرد و به صفحه دیگه و بدون رفرش شدن صفحه جاری اون دایو سبد رو آپدیت کرد


ممنون میشم راهنمایی کنید

arash_fa
جمعه 18 دی 1394, 17:14 عصر
لینک افزودن:


<a href="javascript:;" onclick="add_to_cart('<?=$PRODUCT->id?>');" ></a>

<script>
function add_to_cart(id){

$.ajax({
url: 'add.php',
data:{id:id},
type:'POST',

success: function(d){ ////////////////////به سبد اضافه شده یا سشن آپدیت شده/////////////
var basket = $('#basket');

basket.html(d.trim());


}

});

}


</script>

در کد بالا که درخواست به add.php ارسال میشود و به سبد اضافه میشود در فایل add.php باید یک مقدار را به خروجی بفرستید که این مقدار باید کل محتویات سبد باشد یعنی یک فایل basket.php داشته باشید که مولد سبد خرید است (حاوی کد html و ......) که همیشه آخرین وضعیت سبد را نشون میده . حالا در فایل add.php در هنگام ارسال خروجی به آجاکس اینو بدید


$out = '';ob_start();
include('basket.php');
$out = ob_get_contents();
ob_end_clean();
exit($out);

Mohammad-tashi
جمعه 18 دی 1394, 17:24 عصر
لینک افزودن:


<a href="javascript:;" onclick="add_to_cart('<?=$PRODUCT->id?>');" ></a>

<script>
function add_to_cart(id){

$.ajax({
url: 'add.php',
data:{id:id},
type:'POST',

success: function(d){ ////////////////////به سبد اضافه شده یا سشن آپدیت شده/////////////
var basket = $('#basket');

basket.html(d.trim());


}

});

}


</script>

در کد بالا که درخواست به add.php ارسال میشود و به سبد اضافه میشود در فایل add.php باید یک مقدار را به خروجی بفرستید که این مقدار باید کل محتویات سبد باشد یعنی یک فایل basket.php داشته باشید که مولد سبد خرید است (حاوی کد html و ......) که همیشه آخرین وضعیت سبد را نشون میده . حالا در فایل add.php در هنگام ارسال خروجی به آجاکس اینو بدید


$out = '';ob_start();
include('basket.php');
$out = ob_get_contents();
ob_end_clean();
exit($out);







ممنون از پاسختون اما چندتا سوال :

<?=$PRODUCT->id?> یعنی چی؟ من باید به ازای تمام محصولاتم لینک خرید رو اینجوری چاپ کنم و جای علامت سوال آیدی محصول رو درج کنم؟

من فایل bas.php دارم که محصولات رو در قالب جدول چاپ میکنه ... اما بقیه کارهایی ک فرمودید رو نفهمیدم


$out = '';ob_start();
include('basket.php');
$out = ob_get_contents();
ob_end_clean();
exit($out);

این کد رو در دایوی که واسه سبد گذاشتم بذارم ؟ (تا جایی ک من میدونم میاد فایل بسکت رو اینکلود میکنه ... آیا بقیه کد ها جهت رفرش شدن اونن؟)



و ی سوال دیگه من د سرچ ها ک مشاهده میکردم میگفت نباید هی آپدیت بشه اون دایو و بشه به وب سرور فشار میاره و اینا .... درسته؟

Mohammad-tashi
جمعه 18 دی 1394, 19:01 عصر
دوست عزیز من طبق آموزش شما 3تا فایل ساختم اما وقتی روی لینک کلیک میکنم کاری انجام نمیده
3 تا فایل دارم میذارم

index


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
session_start();

?>

<a href="javascript:;" onclick="add_to_cart('10');" >تست</a>

<script>
function add_to_cart(id){

$.ajax({
url: 'add.php',
data:{id:id},
type:'POST',

success: function(d){ ////////////////////به سبد اضافه شده یا سشن آپدیت شده/////////////
var basket = $('#basket');

basket.html(d.trim());


}

});

}


</script>

</body>
</html>




bastekt.php




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
session_start();

print_r($session['test']);
echo"";
?>
</body>
</html>




add.php



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
session_start();

print_r($session['test']);
echo"";
?>
</body>
</html>




خیلی گیر این قضیه س پروژم ....لطفا راهنمایی نمایید

arash_fa
جمعه 18 دی 1394, 20:46 عصر
فایل محصولات :

توجه کنید کتابخانه jquery هم فراخوانی شود (در کد ها زیر تگ تایتل گذاشتم)



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Untitled Document</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js" ></script> </head> <body><div style="font-size:20px" id="basket">

</div> <a href="javascript:;" onclick="add_to_cart('10');" >تست</a> <script>function add_to_cart(id){ $.ajax({url: 'add.php',data:{id:id},type:'POST', success: function(d){ ////////////////////به سبد اضافه شده یا سشن آپدیت شده/////////////var basket = $('#basket'); basket.html(d.trim()); } }); } </script> </body></html>





add.php




<?php
session_start();
if(isset($_POST['id'])){
if(!isset($_SESSION['BASKET'])){$_SESSION['BASKET']=array();
}
array_push($_SESSION['BASKET'],$_POST['id']);$out = '';
ob_start();include('basket.php');$out = ob_get_contents();ob_end_clean();exit($out);

}


?>


basket.php که باید کنار add.php باشد


<?php
session_start();
echo 'MY BASKET VALUES: <hr>'
print_r($_SESSION['BASKET']);


?>

آجاکس id را میفرستد به add.php و در session قرار میگیرد و بعد فایل basket را میخواند و خروجی را به درخواست ارسالی آجاکس بر میگردونه