PDA

View Full Version : عدم اجرای Ajax



Mr.Brown
سه شنبه 17 تیر 1393, 09:27 صبح
با سلام،
یک صفحه php دارم به نام test.php که داخل آن یک کد ajax قرار داره. گفتم زمانی که روی دکمه موجود در صفحه کلیک شد کد ajax اجرا بشه. به این صورت که مقدار 1 با اندیس id با متد post به همان صفحه ارسال بشه. و در بخش php همین صفحه گفتم که اگر درخواست از طرف ajax بود مقدار ارسالی اش را چاپ کن. اما متاسفانه جواب نمیده.
فایل jQuery را از خود سایت jQuery دانلود کردم. خواهشا از دوستان اگر کسی میدونه مشکل این کد کجاست راهنمایی بفرماید بد جوری بهش نیاز دارم.

توجه: کتابخانه jQuery را از سایت jquery.com دانلود کردم نسخه 1.11 و اگر امکان داره شما هم این فایل javascript را دانلود کنید و روی مرورگر خود این فایل زیر را امتحان کنید.


<!DOCTYPE html>
<html>
<head>
<script src="jquery-1.11.1.min.js"></script>
</head>
<body>

<div id="d"></div>
<button id="b">c</button>

<script>
$(document).ready(function(){
$('#b').click(function(){
$.ajax({
url: 'test.php',
type: 'POST',
data: {id : 1}
})
});
})
</script>

<?php
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
echo $_POST['id'];
?>
</body>
</html>

مهرداد سیف زاده
سه شنبه 17 تیر 1393, 09:54 صبح
شما روشت اشتباه هست
چون وقتی به یک صفحه php دستور get میره صفحه باید در لحظه اجرا مقدار رو بگیره و نشون میده. شما در آن واحد داری به همین صفحه دستور get و هم میخوای نشون بدی.
برای حل این مشکل که شما دستور روی بصورت get به فایل php بفرستی و اون جوابشو به شما نشون بده و شما نمایش بدی باید بصورت زیر کار کنی:

<button id="b">c</button>
<script>
$(document).ready(function(){
$('#b').click(function(){
$.ajax({
url: 'ajax.php',
type: 'POST',
data: {id : 1},
success:function(data)
{
$('#shMessage').html(data);
}
})
});
})
</script>

<div id="shMessage"></div>

حالا در فایل ajax.php دستورا زیر رو بنویس

<?phpif(isset($_POST['id']))
{
echo $_POST['id'];
}
?>

vahidqara
سه شنبه 17 تیر 1393, 10:21 صبح
کاملا درسته .. دوسته ما کامل توضیح دادن
شما فراموش کردین اینو بنویسید در ajax




success:function(data){
$('#d').html(data);
}

Mr.Brown
سه شنبه 17 تیر 1393, 11:26 صبح
ممنون. من کاری را که گفتید انجام دادم. در تگ div مقدار 1 قرار میگیره و نشون داده میشه اما دستور echo مقدار 1 را چاپ نمی کند.

من میخوام مقداری که post میشه از طریق ajax را در فایل ajax.php چاپ کنم اما ظاهرا متغیر POST_$ اصلا set نمیشه.

شما دقیقا با چه نسخه ای از jQuery کار میکنید؟

مهرداد سیف زاده
سه شنبه 17 تیر 1393, 11:34 صبح
خب شما داری مقدار 1 رو میفرستی اونم 1 رو چاپ میکنه شما داده موقع ارسال رو به این صورت در بیارید

data: {id : 'dadeye man'},

در مورد دوستمون vahidqara که فرمودن فراموش کردم
نخیر فراموش نکرد ایشون id دکمشون b هست ما که نمیخوایم طرف رو دکمه کلیک کرد بجاش داده نشون بده
برای همین من یک div با shMessage درست کردم که داده رو بهش نشون بده

Mr.Brown
سه شنبه 17 تیر 1393, 11:42 صبح
فکر کنم فهمیدم مکانیزمش به چه صورت هست. اگه اشتباه می کنم اصلاح کنید:

در ajax میگیم هر موقع عمل درخواست و پاسخ با موفقیت انجام شد داده هایی که در فایل ajax.php به عنوان خروجی echo شدند را به تگی با آیدی shMessage انتساب بده. پس data ای که در تابع زیر آمده همون داده هایی است که فایل ajax.php بهمون برگردونده درست است؟


success:function(data)
{
$('#shMessage').html(data);
}


در مورد دوستمون vahidqara که فرمودن فراموش کردم
نخیر فراموش نکرد
مخاطب vahidqara بنده بودم. اگه به کد پست اول توجه کنید من یک div با آیدی d تعریف کرده داشتم.

مهرداد سیف زاده
سه شنبه 17 تیر 1393, 12:26 عصر
بله دقیق میفرمایید
بخاطر اون تگ d هم بنده رو ببخشید کد رو دقیق ندیدم
راستی آخر ورژن jquery همون بود:گیج::تشویق:


فکر کنم فهمیدم مکانیزمش به چه صورت هست. اگه اشتباه می کنم اصلاح کنید:

در ajax میگیم هر موقع عمل درخواست و پاسخ با موفقیت انجام شد داده هایی که در فایل ajax.php به عنوان خروجی echo شدند را به تگی با آیدی shMessage انتساب بده. پس data ای که در تابع زیر آمده همون داده هایی است که فایل ajax.php بهمون برگردونده درست است؟


success:function(data)
{
$('#shMessage').html(data);
}


مخاطب vahidqara بنده بودم. اگه به کد پست اول توجه کنید من یک div با آیدی d تعریف کرده داشتم.