PDA

View Full Version : سوال: include بدون نمایش! (حل شد)



abbaszz
جمعه 06 بهمن 1391, 23:21 عصر
سلام میخوام یکی از صفحاتم ادرس فایلهای قالب css و جاوا .js رو از صفحه index ام بگیره
این کد

<?php
include("index.php");
?>
میشه اما خود صفحه index رو هم نشون میده. میخوام نشون نده خبر مرگش :دی
راهنمایی لطفا :) مرسی

dousti_design
جمعه 06 بهمن 1391, 23:36 عصر
یه فایل بذارید که همه استایل ها و اسکریپت ها توی اون فراخوانی شده اند. بعد توی index.php و همون صفحه اینکلود بکنید

abbaszz
شنبه 07 بهمن 1391, 00:08 صبح
یه فایل بذارید که همه استایل ها و اسکریپت ها توی اون فراخوانی شده اند. بعد توی index.php و همون صفحه اینکلود بکنید

ممنون.
ولی به اون چیزی که میخواستم نرسیدم
من تابع jsی رو از یه صفحه به صفحه دیگه ارجاع میدم اما کار نمیکنه .
مثلا اگه در index.php بخوام اطلاعاتی رو از mohasebe.php بگیرم توابع جاوایی که در فایل محاسبه هست کار نمیکنه
در حالی که اگر همون تابع رو در index بذارم.به خوبی کار میکنه
ممنون میشم راهنمایی کنی

MMSHFE
شنبه 07 بهمن 1391, 09:47 صبح
کدتون رو بگذارین (کدی که مستقیم کار میکنه و کدی که وقتی توی فایل جداگانه مینویسین، توی index میگذارین و کار نمیکنه)

abbaszz
شنبه 07 بهمن 1391, 19:45 عصر
کدتون رو بگذارین (کدی که مستقیم کار میکنه و کدی که وقتی توی فایل جداگانه مینویسین، توی index میگذارین و کار نمیکنه)
در ایندکس کد زیر رو دارم که اطلاعاتی رو از natijeh.php میگیره و نشون میده(اگر در همینجا کد دوم رو بزارم آلرت کار میکنه)

<form name="natijeh" >....</form>
و در natijeh.php کد زیر رو دارم که تگ p برگردونده میشه به ایندکس اما اسکریپت کار نمیکنه

<? echo '<p>zzzzzzzzzzzz</p><script>alert("okkkkkkkkkk")</script>';?>

amir001
شنبه 07 بهمن 1391, 20:33 عصر
آجاکس کار میکنی؟

اگر کد دومی را با آجاکس داری میگیر بدون که اسکریپتهای داخلش کار نمیکنه. باید اونها را جدا کنی و جدا اجراشون کنی.

abbaszz
شنبه 07 بهمن 1391, 20:38 عصر
آجاکس کار میکنی؟

اگر کد دومی را با آجاکس داری میگیر بدون که اسکریپتهای داخلش کار نمیکنه. باید اونها را جدا کنی و جدا اجراشون کنی.

چجوری جدا کنم؟ نمیشه آخه حتما باید تو یه فایل دیگه باشه (همون فایلی که محساباتو انجام میده و برمیگردونه به ایندکس)
راهی برای اجرا شدن تگ <script> از طریق خوندن از فایل دیگه نیست؟

MMSHFE
دوشنبه 09 بهمن 1391, 18:37 عصر
کد جاوا اسکریپتی که توسط AJAX دریافت کردین رو با تابع eval اجرا کنید.

abbaszz
سه شنبه 10 بهمن 1391, 14:57 عصر
کد جاوا اسکریپتی که توسط AJAX دریافت کردین رو با تابع eval اجرا کنید.

ممنون
اما چجوری؟ متوجه نشدم
میشه رو کد توضیح بدین

MMSHFE
سه شنبه 10 بهمن 1391, 15:10 عصر
دوست گرامی، شما یک کد Jaavscript توسط AJAX دریافت کردین. همون رو بجای اینکه مستقیماً توی صفحه نمایش بدین، باید با eval اجراش کنید.

abbaszz
سه شنبه 10 بهمن 1391, 15:45 عصر
اینجوری اجرا کردم نشد:

eval("echo 'code javascript marbote';");

اشتباه اجرا کردم کد رو؟

MMSHFE
سه شنبه 10 بهمن 1391, 16:05 عصر
ببینید یک مثال میزنم:
این کدی که خروجی JS تولید میکنه و قراره با AJAX صداش بزنیم (فرضاً بنام js.php) :


<?php
ob_start();
header('Content-Type: text/javascript');
date_default_timezone_set('Asia/Tehran');
$date = date('Y/m/d H:i:s');
$name = isset($_GET['name']) ? htmlentities($_GET['name'], ENT_QUOTES, 'utf-8') : 'Anonymous';
echo <<<EOT
alert('Hi {$name}, current date and time: {$date}');

EOT;
ob_end_flush();
?>

اینم فایل اصلی که قراره اون فایل رو با AJAX صدا بزنه و کد JS که تولید میکنه رو اجرا کنه:


<!doctype html>
<html>
<head>
<title>AJAX JS Execution</title>
<meta charset="utf-8"/>
<script src="jqmin.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#submit").click(function() {
$.ajax({
type: 'get',
url: 'js.php',
data: 'name='+$("#name").val(),
success: function(data) {
eval(data);
}
});
});
});
</script>
</head>
<body>
Name: <input id="name" type="text"/><input id="submit" type="submit" value="Submit"/>
</body>
</html>

نکته: این اسکریپت از jQuery استفاده میکنه که باید با نام jqmin.js در کنار اسکریپت قرارش بدین.

abbaszz
سه شنبه 10 بهمن 1391, 16:14 عصر
بالاخره بعد 3روز حل شددددددددددددددددددد :دی
مرسی واقعا

abbaszz
چهارشنبه 11 بهمن 1391, 21:12 عصر
ببینید یک مثال میزنم:
این کدی که خروجی JS تولید میکنه و قراره با AJAX صداش بزنیم (فرضاً بنام js.php) :


<?php
ob_start();
header('Content-Type: text/javascript');
date_default_timezone_set('Asia/Tehran');
$date = date('Y/m/d H:i:s');
$name = isset($_GET['name']) ? htmlentities($_GET['name'], ENT_QUOTES, 'utf-8') : 'Anonymous';
echo <<<EOT
alert('Hi {$name}, current date and time: {$date}');

EOT;
ob_end_flush();
?>

اینم فایل اصلی که قراره اون فایل رو با AJAX صدا بزنه و کد JS که تولید میکنه رو اجرا کنه:


<!doctype html>
<html>
<head>
<title>AJAX JS Execution</title>
<meta charset="utf-8"/>
<script src="jqmin.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#submit").click(function() {
$.ajax({
type: 'get',
url: 'js.php',
data: 'name='+$("#name").val(),
success: function(data) {
eval(data);
}
});
});
});
</script>
</head>
<body>
Name: <input id="name" type="text"/><input id="submit" type="submit" value="Submit"/>
</body>
</html>

نکته: این اسکریپت از jQuery استفاده میکنه که باید با نام jqmin.js در کنار اسکریپت قرارش بدین.

یه سوال: چجوری میشه هر کد جاوایی در js.php که بین تگ <script> قرار داره توی index اجرا بشه؟
بدون اینکه روی ارسال اطلاعات خاصی به js.php تمرکز کنیم.

MMSHFE
چهارشنبه 11 بهمن 1391, 21:29 عصر
این کدی که گذاشتم صرفاً یک مثال بود. میشه کد js.php رو طوری نوشت که هیچ چیزی رو از ورودی نگیره و فقط یکسری کد JS رو echo کنه. البته باید دقت کنید که کدهای JS که میخواین اجرا بشه رو نباید بین تگ script قرار بدین چون تابع eval فقط کد JS میگیره و به تگهای HTML کاری نداره و اگه باشه، خطا میده و کار نمیکنه.

abbaszz
چهارشنبه 11 بهمن 1391, 21:43 عصر
بله. خب اگه بخواییم به ایندکس بگیم هر وقت ارجاعی شد به js.php کدهای جاواشو اجرا کن نه اینکه همون اول اجراشون کنی باید کد رو اینجوری تغییر بدیم؟:

<script type="text/javascript">
$(document).ready(function() {

$.ajax({
type: 'get',
url: 'js.php',
eval();
}
});

</script>

MMSHFE
چهارشنبه 11 بهمن 1391, 21:56 عصر
منظورتون رو متوجه نشدم. یعنی چی هروقت به js.php ارجاع شد کدهاش اجرا بشه، مظنورتون اینه که مثلاً با کلیک روی دکمه خاصی، کدهای js.php اجرا بشه؟

abbaszz
چهارشنبه 11 بهمن 1391, 22:08 عصر
نه. اینی که گفتید همونیه که کدشو گذاشتید و جواب داد
میخوام یه خورده با دست باز تری کار کنم
یعنی به ایندکس بگم هر اطلاعاتی رو از هر صفحه ای گرفتی اگه کد جاوا داشت اجراشون کن، نشون نده!
حالا این فقط یه سواله برای اطلاعات عمومی گفتم...

مشکلی که باهاش برخوردم اینکه ID هایی که واسه جاوا تعریف کردم به ایندکس ارسال نمیشه. به کد زیر دقت کنید:
در ایندکس دارم:

<script>
$(document).ready(function(e) {

$("#btn").click(function(){
$("#div_id").hide();
این یعنی وقتی رو تگی با ای دی btn کلیک کردم تگ با ای دی div_id رو مخفی کن. تگی که قراره مخفی بشه در ایندکس هست
و تگی که قراره بعد کلیک روش عملیات مخفی کردن رو انجام بده(btn) در js.php
اما کار نمیکنه. انگار ای دی رو به ایندکس نمیفرسته
این در صورتیه که اگه تگ با ای دی btn رو توی ایندکس بذارم درست کار میکنه

MMSHFE
چهارشنبه 11 بهمن 1391, 22:11 عصر
دوست گرامی، اگه تگی که قراره روی رویدادهاش کار کنید، با AJAX بارگذاری میشه، باید از تابع live توی jQuery استفاده کنید. مثال:

$(document).ready(function(e) {
$("#btn").live('click', function() {
$("#div_id").show();
});
});

موفق باشید.

MMSHFE
چهارشنبه 11 بهمن 1391, 22:14 عصر
نه. اینی که گفتید همونیه که کدشو گذاشتید و جواب داد
میخوام یه خورده با دست باز تری کار کنم
یعنی به ایندکس بگم هر اطلاعاتی رو از هر صفحه ای گرفتی اگه کد جاوا داشت اجراشون کن، نشون نده!
حالا این فقط یه سواله برای اطلاعات عمومی گفتم...

باید با توابع مربوط به رشته بخصوص توابعی که با عبارات با قاعده (RegEx) کار میکنن، کدهای JS (یعنی محتوای تگهای script) رو پیدا کنید و یکی یکی به تابع eval بدین تا اجراشون کنه. کار سختی نیست. یکم تمرکز و حوصله میخواد تا کد تمیزی از آب در بیاد.

abbaszz
چهارشنبه 11 بهمن 1391, 22:18 عصر
چشم. ممنون
در ضمن اموزش های php تون رو خوندم. واقعا عالی بود. مرسی از کمکتون. شاد و موفق باشید :)