ورود

View Full Version : سوال: ارسال پارامتر بین صفحات



choobin84
چهارشنبه 16 مرداد 1387, 10:31 صبح
سلام
یه صفحه ایندکس دارم که یه سری مقادیر رو از کاربر دریافت می کنه. این مقادیر به صورت فارسی هم هستند.
چطوری با جاوا اسکریپت این مقادیر رو به یه صفحه دیگه ارسال کنم که اونها رو برای تایید مجدد توسط کاربر، بهش نشون بدم.

امید امرایی
چهارشنبه 16 مرداد 1387, 18:38 عصر
صرفا با جاوا اسكريپت خيلي غير ايمن و محدود مي تونيد اين كار رو انجام بديد

choobin84
پنج شنبه 17 مرداد 1387, 07:57 صبح
صرفا با جاوا اسكريپت خيلي غير ايمن و محدود مي تونيد اين كار رو انجام بديد
چگونه ؟

امید امرایی
جمعه 18 مرداد 1387, 14:24 عصر
شما چرا از PHP استاده نمی کنید ؟



چگونه ؟

به این شکل که ابتداباید تابعی بنویسید که بتونه URL رو تجزیه تحلیل کنه و مثلا اسمشو بزارید parseURL

مثال :
page1.html


window.location.href = 'http://www.mysite.com/page2.html?myvar=' + document.form1.edit1.value;
page2.html


var URL = parseURL(window.location.href);
var myVar = URL['myvar'];
در کل این روش اصلا توصیه نمی شه و توضیح اون صرفا برای رفع ابهام بود

ftmotlagh
جمعه 18 مرداد 1387, 17:42 عصر
احتمالا var URL نباید باشه؟
چون URL تعریف نشده!

امید امرایی
جمعه 18 مرداد 1387, 18:53 عصر
درسته باید var باشه
البته در این مورد نباشه هم هیچ مشکلی پیش نمیاد

mostafa_sgh
جمعه 18 مرداد 1387, 18:53 عصر
سلام دوست عزیز
شما برای اینکه مقادیر فارسی رو با Javascript ارسال کنید :

به نظر من 2 راه دارید :

1- استفاده از کوکی (جستجو کنید مطالب زیادی در این رابطه وجود داره )
2- استفاده از QuriString (به صورت Encode)

و اما روش دوم :

شما قبل از لینک به صفحه دوم باید مقادیر فارسی رو Encode کنید و به Url اضافه کنید و در صفحه دوم اونو پردازش کنید .



function urlEncode(uniText){
var text = '';

var normal = new Array("ا","آ","ب","پ","ت","ث","ج","چ","ح","خ","د","ذ","ر","ز","ژ","س","ش","ص","ض","ط","ظ","ع","غ","ف","ق","ک","گ","ل","م","ن","و","ه","ي","ی"," ");
var encode = new Array("%d8%a7","%d8%a2","%d8%a8","%d9%be","%d8%aa","%d8%ab","%d8%ac","%da%86","%d8%ad","%d8%ae","%d8%af","%d8%b0","%d8%b1","%d8%b2","%da%98","%d8%b3","%d8%b4","%d8%b5","%d8%b6","%d8%b7","%d8%b8","%d8%b9","%d8%ba","%d9%81","%d9%82","%da%a9","%da%af","%d9%84","%d9%85","%d9%86","%d9%87","%d9%88","%db%8c","%d9%8a","+");

for(var i = 0;i <= uniText.length ; i++ ){
var str = uniText.substring(i,i+1);
for(var j= 0; j <= normal.length;j++){
if(normal[j] == str)
text += encode[j];
}
}

return text;
}



window.location.href = 'http://www.mysite.com/page2.html?myvar=' + urlEncode(document.form1.edit1.value)

و در صفحه دوم نیز میتوانی عکس کد بالا رو انجام بدی.

* البته یه سری تغییرات میخواد که خودتون باید زحمتشو بکشید (:

jaza_sa
جمعه 18 مرداد 1387, 22:42 عصر
سلام
و اما استفاده از JavaScript :

function basket (id)
{
alert('سفارش شما دريافت شد');
var myProducts = "";
if (Get_Cookie("lists") != null)
myProducts = Get_Cookie("lists") + ",";
myProducts += id;
Set_Cookie("lists", myProducts, '', '/', '', '' );
}به عنوان نمونه وقتی در این سایت (http://padideh-co.com/site/) روی دکمه "اضافه به سبد خرید" کلیک میکنیم ، اطلاعات در یک کوکی ذخیره میشه و وقتی به قسمت سبد خرید میریم ، تمامی اون اطلاعات رو میتونیم مشاهده کنیم .

choobin84
شنبه 19 مرداد 1387, 07:56 صبح
شما چرا از PHP استاده نمی کنید ؟
در کل این روش اصلا توصیه نمی شه و توضیح اون صرفا برای رفع ابهام بود
از php استفاده نمی کنم، چون نمیخام ، مرتبا برای بررسی صحت داده ها و مقادیر وارد شده توسط کاربر ، داده ها به سمت سرور فرستاده بشن و برگردن.
چرا این روش رو توصیه نمی کنید؟
ممنون میشم، توضیحاتی در این مورد به من بدهید.

choobin84
شنبه 19 مرداد 1387, 07:59 صبح
سلام دوست عزیز
شما برای اینکه مقادیر فارسی رو با Javascript ارسال کنید :

به نظر من 2 راه دارید :

1- استفاده از کوکی (جستجو کنید مطالب زیادی در این رابطه وجود داره )
2- استفاده از QuriString (به صورت Encode)

(:

ممنون دوست من،
در مورد روش اول، در ابتدا ، همین کار رو کردم، ولی ظاهرا کوکی های جاوا با فارسی مشکل دارن، فیلدها رو یکی درمیون فارسی نشون می داد بقیه اش رو می ریخت به هم.
در مورد دومی هم بسیار ممنون.

امید امرایی
شنبه 19 مرداد 1387, 11:04 صبح
از php استفاده نمی کنم، چون نمیخام ، مرتبا برای بررسی صحت داده ها و مقادیر وارد شده توسط کاربر ، داده ها به سمت سرور فرستاده بشن و برگردن.


چه فرقي مي كنه ؟ شما يا بايد بررسي بكنيد يا خير و از هر طريقي كه به صفحه بعد برن باز هم براي صحتشون بايد به سمت سرور برن .
گذشته از اون شما اگه از session استفاده كنيد در 90% موارد اصلا نيازي به تعيين اعتبار مجدد نداريد و فقط وجود session رو بررسي مي كنيد



چرا این روش رو توصیه نمی کنید؟


چون ايمن نيست .

ftmotlagh
شنبه 19 مرداد 1387, 20:38 عصر
بخشید من به این روش نیاز دارم وقتی از تابع parseURL(window.location.href) استفاده می کنم این ارور رو میده :

Error: Object expected

امید امرایی
شنبه 19 مرداد 1387, 23:04 عصر
parseURL یک تابع کتابخانه ای و توکار نیست دوست من این تابع رو من مثال زدم

اما برای اینکه کارت راه بیفته نمونه ای از تابع رو که واسه خودم نوشته بودم براتون می زارم



function parseURL(){
URL = new Array();
var Url = window.location.href;
var URLSeg = Url.split('?');
URL['protocol'] = URLSeg[0].split(':')[0];
var mainAdd = URLSeg[0].substring((URL['protocol'].length + 3),(URLSeg[0].length - 1))
URL['domain'] = mainAdd.split('.')[mainAdd.split('.').length - 1];
if(URL['domain'].toLowerCase() == 'localhost')
URL['host'] = 'localhost';
else
URL['host'] = mainAdd.split('.')[mainAdd.split('.').length - 2];

if(URLSeg.length > 1){
var params = URLSeg[1].replace('&','?');
var URLParams = params.split('&');
for(i=0; i<URLParams.length; i++){
var nv = URLParams[i].split('=');
URL[nv[0]] = nv[1];
}

}

return URL;
}

kiosksoft
شنبه 02 شهریور 1387, 18:50 عصر
javascript:
var strNewResult="a1";
window.location="AdministratorPage.aspx?cart_no="+strNewResult;
asp.net :
string pageName = Request.QueryString["cart_no"].ToString();