PDA

View Full Version : سوال: چگونگی استفاده از متد POST در jQuery برای انتخاب محتوی



LORD AELX
شنبه 16 مرداد 1389, 10:46 صبح
من یکمی در این مورد گیج شده ام و از طرفی وقت Try & Error هم ندارم... :لبخندساده: ببینید، فرضا من چند تا لینک توی صفحه ام دارم و میخوام کاری کنم با کلیک روی هر کدوم از آن ها، یک مقدار خاص POST شود، از طرف دیگر هم در PHP بیام آرایه POST_$ رو بخونم و ببینم باید چه محتوی ای رو نمایش بدهم. :متفکر:

- آیا می توان چند بار این کار را انجام داد؟ یعنی من دفعه اول روی یک لینک کلیک کنم و دفعه بعد روی دیگری و بر اساس هر کدام محتوی مورد نیاز من توسط PHP چاپ شود.

- آیا وقتی توسط jQuery مقادیر را ارسال می کنیم، نیاز به استفاده از تگ form هست یا نه؟

- می شود یک نمونه مثال به من بدهید؟

متشکرم :قلب:

eshpilen
شنبه 16 مرداد 1389, 12:57 عصر
والا منکه jQuery و کلا فریمورک اصلا کار نکردم در کل برنامه نویسی وب.
ولی دستی میشه کدش رو نوشت.
یعنی میخوای AJAX باشه دیگه و کل صفحه عوض نشه؟
خب فرستادن POST با AJAX که کار سختی نیست. مثالش توی نت زیاد هست.

LORD AELX
شنبه 16 مرداد 1389, 13:07 عصر
والا منکه jQuery و کلا فریمورک اصلا کار نکردم در کل برنامه نویسی وب.
ولی دستی میشه کدش رو نوشت.
یعنی میخوای AJAX باشه دیگه و کل صفحه عوض نشه؟
خب فرستادن POST با AJAX که کار سختی نیست. مثالش توی نت زیاد هست.

ممنونم که جواب دادی... :بوس: ببین نه اینکه AJAX باشه و صفحه کلا reload نشه، من فقط میخوام وقتی کسی روی یک تگ a خاص کلیک کرد، مقدار موجود در href اون تگ POST بشه و مسلما صفحه هم باید reload بشه تا PHP بتونه مقدار ارسال شده رو پردازش کنه. من یه نمونه کد نوشتم ولی کار نکرد!! سوالم اینه که من میتونم از این روش برای منو هام استفاده کنم یا نه؟! یعنی با کلیک روی هر a ی متفاوت، مقداری متفاوت رو ارسال کنم و کار هم بکنه!

من یخورده گیج شدم، وگرنه خودت میدونی که تا به این درجه از کلنجارسکف :لبخند: نرسم، سوال نمی پرسم!! :بامزه:

فقط یه نمونه کد میتونه با مغز من ارتباط برقرار کنه، یه نمونه کد ساده با jQuery و PHP که مثلا دو تا لینک داشته باشه، روی اولی که کلیک کنیم، روی صفحه چاپ کنه: Hello و روی دومی که کلیک بشه، بنویسه Bye ... فقط قسمت چاپ باید توسط PHP باشه نه jQuery... یعنی jQuery مقادیر رو به سرور ارسال کنه و PHP هم اونا رو بگیره و چاپ کنه.

متشکرم :قلب:

LORD AELX
شنبه 16 مرداد 1389, 13:10 عصر
راستی اینم بگم که من همین کاری رو که گفتم میتونم با جاوا اسکریپت انجام بدهم، بدین صورت که یک form داشته باشم و بعد از کلیک روی تگ a مقدار href اون رو یک جاوا اسکریپت بنویسم که بیاد اول مقدار action فرم رو تغییر بده و یک query انتهای اون اضافه کنه و بعد بیاد فرم رو submit کنه... بعد از این عملیات PHP میاد از آرایه GET_$ مقدار ارسال شده رو میخونه...

خوب، حالا من میخوام همین کار رو با jQuery و ترجیحا بدون استفاده از تگ form و توسط متد POST انجام بدهم.

متشکرم :قلب:

exlord
شنبه 16 مرداد 1389, 14:09 عصر
$.post("test.php", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});


if(isset($_POST[‘name’])) {
$name = $_POST[‘name’];
if($name == "John")
echo " whats's up ";
}

LORD AELX
شنبه 16 مرداد 1389, 21:03 عصر
خوب میدونید مشکل من دقیقا چیه؟ :متفکر: من میخوام دو تا مقدار مختلف رو به سرور بفرستم، اما هیچ فرمی در کار نیست و تنها چیزی که هست یک تگ a هستش. من شاید بتونم مقدار href اون رو یک Query String قرار بدهم (مثلا index.php?action=aaa&name=nnn) ولی دو تا مشکل بوجود می آید، اول اینکه اگر کار کند (؟) از متد POST استفاده نشده و از GET استفاده شده و دوم اینکه این Query String در Address Bar مرورگر نمایش داده می شود. :لبخندساده:

آیا راهی هست تا من این دو مقدار را بدون اینکه input و فرمی در کار باشد، به سرور ارسال کنم؟ :متفکر: باز هم میگم، من فقط چند تا لینک دارم و می خوام با هر کدوم از آن ها یک چنین کاری بکنم، و در طرف PHP هم با توجه به مقدار ارسال شده از آن ها، محتوی مناسب را echo کنم. پس نه میشه این همه فرم تو صفحه گذاشت و نه هیچ نوع input ای... تنها چیزی که وجود دارد چند تگ a هست و بس.

ممنون میشم پاسخ بدهید :قلب:

mehdi.mousavi
یک شنبه 17 مرداد 1389, 01:05 صبح
خوب میدونید مشکل من دقیقا چیه؟ :متفکر: من میخوام دو تا مقدار مختلف رو به سرور بفرستم، اما هیچ فرمی در کار نیست و تنها چیزی که هست یک تگ a هستش. من شاید بتونم مقدار href اون رو یک Query String قرار بدهم (مثلا index.php?action=aaa&name=nnn) ولی دو تا مشکل بوجود می آید، اول اینکه اگر کار کند (؟) از متد POST استفاده نشده و از GET استفاده شده و دوم اینکه این Query String در Address Bar مرورگر نمایش داده می شود. :لبخندساده:

سلام.
فرض کنید که صفحه شما حاوی این Link هستش (و همینطوری Link های مشابه مورد نظرتون):

<a href="http://www.hotmail.com?param1=value1&param2=value2" id="first">First</a>


$(function () {
//This function is borrowed from "http: //jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html" :)
function getUrlVars(href) {
var vars = [], hash;
var hashes = href.slice(href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
};

$('a').click(function () {
var href = $(this).attr('href');
if (href) {
$.post(href, getUrlVars(href), function () {
//done...
});
}

return false;
});
});


تابع getUrlVars رو از URL فوق قرض گرفتم (با اندکی تغییر). بعد، توی Ready Handler میام href مربوط به Link ای که click شده رو میخونم، و پارامترهای اونو به یه JSON Data عوض میکنم و سپس، با استفاده از $.post، اطلاعات مورد نظر رو به صفحه دلخواهم پست میکنم و ... در نهایت false برمیگردونم که لینم Follow نشه!

حالا 10 تا لینک هم که به صفحه اضافه کنید، داده های موجود در URL لینک click شده بطور خودکار به سرور مورد نظر post خواهد شد.

موفق باشید.

LORD AELX
یک شنبه 17 مرداد 1389, 09:59 صبح
خوب، تا اینجا با این کاری که آقا مهدی گفتند javascript رو تبدیل کردم به jquery و فرم ام هم حذف کردم از صفحه! :لبخندساده: تا به اینجا عالیه... حالا مشکل اصلی ام هنوز باقیه، یعنی استفاده نشدن از متد POST و عدم نمایش Query String ... ببینید درسته که jQuery از متد POST استفاده کرد، ولی همچنان علاوه بر این که QS داریم، مقادیر فقط در آرایه GET_$ قابل دستیابی هستند!! :متفکر: نمیشه کاری کرد واقعا متد POST استفاده بشه و نه QS ای در کار باشه و نه در آرایه GET_$ ذخیره بشه؟ (تو POST_$ قرار بگیره)

متشکرم :قلب:

exlord
یک شنبه 17 مرداد 1389, 13:27 عصر
<a href="#" onclick="getData('link1')">Link 1</a>


function getData(linkID) {
$.ajax({
type: "POST",
url: "some.php",
data: "link=" + linkID + "&do=getdata",
success: function (data) {
alert("Data retrived: " + data);
}
});
}


<?php
$linkID = $_POST['link'];
if(isset($linkID)){
if($linkID == 1)
echo "LinkData1";}
?>