PDA

View Full Version : سوال: پاس کردن متغیر بین js و php



zoro21750
سه شنبه 02 فروردین 1384, 23:44 عصر
سلام.
چه جوری میشه بین 2 تا کد js و php تو یه صفحه، یک متغیر رو بدون reload کردن فرستاد؟
مرسی.

zoro21750
سه شنبه 02 فروردین 1384, 23:54 عصر
نمیشه! چون:
<span dir=ltr>
Having a webpage B in this way also allows me to pass javascript variables to PHP.
Can’t pass JavaScript variables to a PHP script in the same page as the JavaScript. They have to be passed to a PHP script on another page. The reason is that PHP is parsed server side before the page is downloaded and JavaScript is parsed client side after the page is downloaded. The variable values have to be written before they’re passed and this wouldn’t happen if you tried to write them directly to PHP in the same page, since the PHP would be parsed before the JavaScript.</span>

cybercoder
چهارشنبه 17 فروردین 1384, 21:00 عصر
آقا اگه واقعا می شه بگید چون من یه کنترل پنل دارم می سازم که مخلوطی از js و php
:oops:

zxc
یک شنبه 21 فروردین 1384, 03:17 صبح
http://jpspan.sourceforge.net

oxygenws
یک شنبه 21 فروردین 1384, 03:39 صبح
اصولا چنین کاری ممکن نیست چون JS سمت کلاینت و PHP سمت سرور اجرا میشه.
JPSpan هم به هر حال درخواستی سمت سرور می فرسته (و البته تا حدودی بدون reload شدن صفحه) تقریبا مشابه حالتی که GMail الان ازش استفاده می کنه.

zxc
پنج شنبه 25 فروردین 1384, 00:44 صبح
اصولا چنین کاری ممکن نیست چون JS سمت کلاینت و PHP سمت سرور اجرا میشه.
JPSpan هم به هر حال درخواستی سمت سرور می فرسته (و البته تا حدودی بدون reload شدن صفحه) تقریبا مشابه حالتی که GMail الان ازش استفاده می کنه.

خب اشکال استفاده از JPSpan چیه؟ معلومه که معلومه که php رو سرور و js در کلینت اجرا می شه. JPSpan و ابزار مشابه اون مثل SAJAX (http://www.modernmethod.com/sajax/) با استفاده از xmlhttprequest این امکان رو به وجود میارن که بدون reload کردن بخشی از صفحه رو عوض کرد(دقیقا مشابه کاری که GMail , Google Suggest, Google Maps می کنن). برای اینکه بهتر متوجه بشین که این transparency بین کد js و کد سرور ساید چطوری به وجود میاد به مثال های SAJAX رجوع کنید.

oxygenws
پنج شنبه 25 فروردین 1384, 01:10 صبح
من با این تکنولوژی آشنا هستم، نگفتم هم اشکالی داره :)

فقط یادت نره که به هر حال، بخشی از صفحه reload میشه :) و این یعنی reload!!!!! (شاید بشه گفت که، یک حالت بسیار ایده آل تر و زیبا تر از فریم ها)

houtanal
پنج شنبه 25 فروردین 1384, 03:45 صبح
من با این تکنولوژی آشنا هستم،
میشه راجع به نحوه عملکردش توضیح بدی

oxygenws
پنج شنبه 25 فروردین 1384, 04:12 صبح
با استفاده از xmlhttprequest
این کار باید توسط جاوا اسکریپت انجام بشه.
به این صورت که درخواستی از طرف جاوا اسکریپت، بدون reload صفحه به سمت سرور ارسال میشه و response به صورت یک رشته دریافت می شه، که میشه این رشته رو پردازش کرد و با همون جاوا اسکریپت یه کارایی باهاش انجام داد.

این سیستم (xmlhttprequest) توسط مایکروسافت و به صورت ActiveX ساخته شده، اما الان، اکثر مرورگر های معروف این رو شبیه سازی کردند و پشتیبانی می کنند. (فکر کنم اپرا پشتیبانی نکنه!!)

houtanal
پنج شنبه 25 فروردین 1384, 04:32 صبح
xmlhttprequest
میشه راجع به این یک توضیح مقدماتی بدی دقیقا چه کاری انجام میده چطور کارمی کنه.چه طور باید ازش استفاده کرد و ..........
tnx

oxygenws
پنج شنبه 25 فروردین 1384, 11:48 صبح
بستگی داره که از چه مرورگری استفاده می کنی، این یک پروتکل است و لاغیر :)

در IE باید با:
new ActiveXObject("Msxml2.XMLHTTP");
یا
new ActiveXObject("Microsoft.XMLHTTP");
کار کنی.
و در مابقی مرورگر ها (حداقل سری موزیلا)
new XMLHttpRequest();

این هم تکه کد مربوطه برای ساخت این شی، در ساجاکس:


function sajax_init_object&#40;&#41; &#123;
sajax_debug&#40;"sajax_init_object&#40;&#41; called.."&#41;

var A;
try &#123;
A=new ActiveXObject&#40;"Msxml2.XMLHTTP"&#41;;
&#125; catch &#40;e&#41; &#123;
try &#123;
A=new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;;
&#125; catch &#40;oc&#41; &#123;
A=null;
&#125;
&#125;
if&#40;!A &amp;&amp; typeof XMLHttpRequest != "undefined"&#41;
A = new XMLHttpRequest&#40;&#41;;
if &#40;!A&#41;
sajax_debug&#40;"Could not create connection object."&#41;;
return A;
&#125;
کلا ترجیح می دم از ادامه این بحث در اینجا خودداری کنم، این بحث ربطی به این بخش نداره.