PDA

View Full Version : حرفه ای: صدا زند تابع php با جاوا اسکریپت ضمن فرستادن متغیر



intermanch
دوشنبه 07 تیر 1389, 17:09 عصر
من با کلی زحمت تونستم با دستورات جاوا اسکریپت یه تابع پی اچ پی رو صدا بزنم
اول از تکس نود استفاده کردم که دستورات بانک اطلاعاتی رو پشتیبانی میکرد اما echo رو نخیر

اما بعدا با ineerHTml نوشتم و کل دستورات اجرا میشه اما نمیدونم یه رشته رو چطور بنویسم که کم صدا زدن ضمن ارسال متغیر باشه!!!





<!--
this code only call funnctions php but
how call function php[ function-name(varible)]
intermanch@gmail.com
www.intermanch.blogfa.com
-->

<script>
function Helloo($f)
{
var t4 = document.createElement('div');
t4.innerHTML ="<?php hello() ?>";
document.getElementById('dl').appendChild(t4);
}
</script>

<?php
function hello()
{
//if on the java script can write function-name(varible) than can write echo varible;
//echo $x;
//help to complet this code
echo "name: ";
echo "<input><br>";
echo "<a href='http://www.intermanch.blogfa.com'>view my weblog";
//and all php cods
}
?>

<body>

<input value='click me' type=button onclick="Helloo('200')">
<div align=right id=dl>
</div>
</body>
</html>





حتی اون قسمت ::
<?php hello(m) ?>

رو بصورت مختلف نوشتم با + جدا کردم و سرهم کردم اما نمیشه

در ضمن من همین سبک رو می خوام صورت مساله رو پاک نکنید بگید با فرم اینکارو عملی کن -اگه بلدید روی این سبک ارسال که نوشتم حرکت کنید با اچ تی ام ال هم بلد اضافه کنم به ابجکت های موجود اما بدرد حل این مساله و مناسبش نیست
call function php by java script

eshpilen
دوشنبه 07 تیر 1389, 20:12 عصر
شما نمیتونید با جاوااسکریپت یک تابع PHP رو اجرا کنید چون جاوااسکریپت در سمت کلاینت و روی مرورگر اجرا میشه و PHP در سمت سرور و نیاز به یک محیط مجهز به PHP مثل وب سرور آپاچی داره. اون کاری هم که شما کردی ربطی به جاوااسکریپت نداره و در سمت سرور پردازش عادی انجام میشه بدون توجه به اینکه تگهای جاوااسکریپت چی هستن.
اگر بخواید از سمت کلاینت، بصورت غیرآشکار و بدون نیاز به تغییر کلی صفحه در مرورگر کاربر، با سمت سرور ارتباط برقرار کنید میتونید از AJAX استفاده کنید. یعنی شما اطلاعات رو توسط جاوااسکریپت به یک فایل PHP روی سرور ارسال میکنید و جوابش رو هم با جاوااسکریپت دریافت میکنید، و بعد میتونید با همون جاوااسکریپت جواب رو در جای مناسب صفحه درج کنید یا بر مبنای مقدار اون، عملیات خاصی رو انجام بدید.

intermanch
دوشنبه 07 تیر 1389, 20:56 عصر
آقای مهندس :شما از جمله معروف سمت سرور و کلاینت یه چیزی شنیدیا

عزیزم اون کدی که من نوشتم کاملا در یک صفحه ی php است لذا پردازش مت سرور انجام میشود حتی اون کد جاوا اسکریپت در سمت سرور اجرا شده و بعدش فانشن php انجام میشود

تازه من هنوز با اون کد دستور اتصال به بانک رو تو سایت قرار ندادم در حالیکه اگر می ذاشتم کاملا متوجه میشدید که میتونست از بانک اطلاعات رو دریافت و به کاربر نمایش دهد


اون جمله ی معروف کلاینت سرور هم از همینجا اعلام میکنم فقط بای برنامه نویسی شبکه کاربررد دارد

چرا اینکه منظور از پردازش سمت سرور آن است که کابر بعد پر کردن فرم اطلاعاتش منتقل میشود و خروجی از ان سو می آید ولی اگر عنایت داشته باشید فرمی که کاربر پر میکند نیز نزد سرور است مثل اینکه بگویند برنامه ای که روی تلویزیون است مال خونی شماست

نه همه چیز سرور است و منظور از کلاینت که صحبت میشه فقط مفوم است هیچ منطقی نمیتونه ثابت کنه کلاینت نقشی در نمایش داره

اما در شبکه اینطور نیست

اگه شک دارید میتونید روی سرور PHP و آپاچی امتحان و از بانک خروجی بگیرید

eshpilen
دوشنبه 07 تیر 1389, 22:32 عصر
آقای مهندس :شما از جمله معروف سمت سرور و کلاینت یه چیزی شنیدیا

:لبخند:


عزیزم اون کدی که من نوشتم کاملا در یک صفحه ی php است لذا پردازش مت سرور انجام میشود حتی اون کد جاوا اسکریپت در سمت سرور اجرا شده و بعدش فانشن php انجام میشود اشتباه میکنی جاوااسکریپت هیچوقت در سمت سرور اجرا نمیشه.
از دید سرور، شما یه تابع PHP وسط یکسری متن سادهء دیگه گذاشتی و سرور میاد اون تابع PHP رو اجرا میکنه و خروجی ای که اون تابع تولید میکنه همونجا بجای فراخوانی تابع درج میشه که در نهایت فقط اون خروجی پرینت شده به کلاینت ارسال میشه، نه یک تابع پی اچ پی.


تازه من هنوز با اون کد دستور اتصال به بانک رو تو سایت قرار ندادم در حالیکه اگر می ذاشتم کاملا متوجه میشدید که میتونست از بانک اطلاعات رو دریافت و به کاربر نمایش دهد
بله اینکه مسلمه. ولی فقط یکبار در زمان درخواست صفحه توسط مرورگر کاربر که اسکریپت PHP شما در سمت سرور پردازش و خروجی عملیات به کلاینت ارسال میشه. بعد از اون دیگه شما از سمت کلاینت به اون تابع دسترسی ندارید.


اون جمله ی معروف کلاینت سرور هم از همینجا اعلام میکنم فقط بای برنامه نویسی شبکه کاربررد دارداینترنت هم یک شبکه هست.
البته پروتکل http یخورده قضیه رو خاص میکنه.


چرا اینکه منظور از پردازش سمت سرور آن است که کابر بعد پر کردن فرم اطلاعاتش منتقل میشود و خروجی از ان سو می آید ولی اگر عنایت داشته باشید فرمی که کاربر پر میکند نیز نزد سرور است مثل اینکه بگویند برنامه ای که روی تلویزیون است مال خونی شماست

نه همه چیز سرور است و منظور از کلاینت که صحبت میشه فقط مفوم است هیچ منطقی نمیتونه ثابت کنه کلاینت نقشی در نمایش داره

اما در شبکه اینطور نیست

اگه شک دارید میتونید روی سرور PHP و آپاچی امتحان و از بانک خروجی بگیرید
ما که نفهمیدیم شما چی میگی :لبخند:

بهرحال این کد در جاوااسکریپت:

onclick="Helloo('200')"اگر hello یک تابع PHP باشه، هرگز کار نخواهد کرد.

intermanch
دوشنبه 07 تیر 1389, 22:45 عصر
شما میگید اون دستورات php بصورت یک رشته درمیاد و برای کاربر چاپ میشه
اما من عرض کردم وقتی اون فانشن php اجرا بشه همه چیزو چاپ میکنه

و خروجی از یک بانک اطلاعاتی که دیگه رشته نمیشه که بلکه واقعا سرور از بانک اطلاعاتی رو استخراج کرده


یه مثال آسون اگه توی یه صفحه php بنویسی include('name page')m کدهای صفحه بعد اجرا نمیشن

من جاوا اسکریپت ننوشتم عزیزم - در واقع اون کد جاوا داره یه خط php رو چاپ میکنه<<< نوشتم :include('name page')m

می تونی درک کنی؟؟؟!!!

intermanch
دوشنبه 07 تیر 1389, 22:50 عصر
دقت نمیکنیا
من نمیتونم مستقیما برای onclick یه دکمه اجرای شدن فانشن php رو در نظر بگیرم بلکه بلکه توسط یه فانشن اسکریپت یه فانشن پی اچ پی رو ران میکنم

جاوا : helloo

و مال php :
hello

eshpilen
سه شنبه 08 تیر 1389, 00:14 صبح
بیان شما خیلی مبهمه و اطلاعات فنی ناقص.
دقیقا میخوای چیکار کنی توی کدوم قطعه کد مشکل داری؟
مگه عنوان تاپیک این نیست که میخوای یک تابع PHP رو از داخل جاوااسکریپت صدا بزنی (همراه با ارسال آرگومان بهش)؟
خب اینکار شدنی نیست مگر از طریق AJAX.
سمت کلاینت کد PHP رو نمیتونی اجرا کنی و سمت سرور هم کد جاوااسکریپت اجرا نمیشه.
این دوتا هرکدوم مال یک طرف قضیه هستن.
بنابراین شما مجبوری برای اجرای تابع PHP، مجددا با سرور تماس بگیری و اینکار هم از طریق درخواست یک فایل PHP توسط AJAX و دریافت خروجی اون ممکن هست.
البته اگر نخوای که صفحه در این خلال ثابت بمونه کار راحتتر میشه و نیاز به AJAX نیست و میتونی مقدار مورد نظر رو به شکل عادی فرمهای HTML که سابمیت میشن به اسکریپت PHP ارسال کنی.

intermanch
سه شنبه 08 تیر 1389, 01:34 صبح
بیان شما خیلی مبهمه و اطلاعات فنی ناقص.


:ناراحت:

:گریه:

:عصبانی:

eshpilen
سه شنبه 08 تیر 1389, 08:35 صبح
چیه زبون نداری؟ :لبخند:

exlord
سه شنبه 08 تیر 1389, 12:32 عصر
شما اگه میخوای با زدن یه باتن یه کد php اجرا بشه اینجوری باید عمل بکنی ...
<?php
$btn = $_POST['btn1'];
if(isset($btn))
Hello();
function Hello(){
echo "Something";
}
?>
<form method="post" action="new.php">
<input type="button" value="clickMe" name="btn1">
</form>