PDA

View Full Version : سوال: کش شدن کد های ایجکس بعد از هر بار فراخوانی صفحه



numberone1
چهارشنبه 08 دی 1395, 12:42 عصر
سلام دوستان

روی سایتم لینک هایی هست که با زدنشون popup باز میشه و داخلشون فرم هایی لود میشه . از اونجایی که باز شدن popup ها بصورت ایجکس انجام میشه کد های جاوا اسکریپت که مربوط به سابمیت فرم همون صفحه هست با هر بار باز و بسته کردن popup از بین نمیره و کش میشه
اگر یک popup و 2 بار باز کنم و دفعه دوم فرم و سابمیت کنم درخواست سابمیت دوبار ارسال میشه
هر چند بار که یک popup باز و بسته کنم بعد فرم و سابمیت کنم به همون تعداد باز و بسته کردن درخواست ایجکس ارسال میکنه
چیکار کنم قبل از لود شدن محتویات popup به جز کدهای html قبلی کد های جاوا اسکریپت هم پاک بشه کامل؟

ممنون

sedamorde
چهارشنبه 08 دی 1395, 16:29 عصر
سلام دوست عزیز.

اگر من درست متوجه شده باشم سوال شما درمورد Javascript نه PHP و شما می‌خواهید یک صفحه که دارای فرم است را چند بار ارسال کنید و هر بار می‌خواهید فیلدهای فرم ریسِت بشه!؟

باید بعد از باز شدن POPUP با جاوا اسکریپت فیلد‌ها را خالی کنید. مثلا با jquery مثل این:



$('.input').val('');


اگر هم مشکل چیزه دیگری است لطفا واضح‌تر بیان کنید.

موفق باشید.

numberone1
چهارشنبه 08 دی 1395, 17:06 عصر
سلام دوست عزیز.

اگر من درست متوجه شده باشم سوال شما درمورد Javascript نه PHP و شما می‌خواهید یک صفحه که دارای فرم است را چند بار ارسال کنید و هر بار می‌خواهید فیلدهای فرم ریسِت بشه!؟

باید بعد از باز شدن POPUP با جاوا اسکریپت فیلد‌ها را خالی کنید. مثلا با jquery مثل این:



$('.input').val('');


اگر هم مشکل چیزه دیگری است لطفا واضح‌تر بیان کنید.

موفق باشید.

ممنون از جوابی که دادی ولی منظورم این نبود. منظورم کل کد ها بود. کل کد های html فرم و کد های ایجکس مربوط به سابمیت همون فرم
من اون div که کل کد ها داخلش لود میشه رو پاک میکنم ولی کدهای جاوا اسکریپت میمونه و پاک نمیشه . مشکل همینه
کدی که لود میکنم مشابه اینه


<form action="/index.php/security/phone" class="col s12" id="verifyPhoneNumber" method="post" accept-charset="utf-8">
<input type="hidden" name="__Token" value="98ca465dbe1386ac233a45c4a375202f" style="display:none;">
<div class="row">
<div class="section caption col s12">
<span>enter code here</span>
</div>
</div>
. .
.
.
بقیه کد های html
<script type="text/javascript">
$(document).on('click', '#resend', function (event) {
event.preventDefault();


var parent = $('[name="parent"]').val();
$('#verifyPhone').attr('disabled', 'disabled').html('loading...');
$('#result').html(' ');
var formData = new FormData($('#phoneNumber')[0]);
$.ajax({
type: "POST",
dataType: 'json',
data: formData,
url: parent+"/phoneSubmit",
processData: false,
contentType: false,
success: function (data) {.
.
.
بقیه کد های جاوا اسکریپت

اینجوری پاک میکنم

$('#content').html(' ');


قسمت کد های html پاک میشه ولی کد های جاوا اسکریپت اضافه میشه به قبلی و وقتی سابمیت میزنم همشون باهم اجرا میشن

plague
چهارشنبه 08 دی 1395, 17:21 عصر
کد های جاوا اسکریپت رو بزار توی یک صفحه js و تو صفحه مادر ضمیمشون کن بجای اینکه تو صفحه پاپ آپ لودشون کنی
یا اگه اصرار داری تو صفحه پاپ آپ باشن کدا بازم بزارشون توی یه فایل Js و توی صفحه پاپ آپ چک کن هر بار اجرا میشه که اگه این فایل اینکلود نشده بود اینکلودش کن که با یه سرچ ساده میتونی روش های زیادی برای این پیدا کنی

numberone1
چهارشنبه 08 دی 1395, 17:27 عصر
کد های جاوا اسکریپت رو بزار توی یک صفحه js و تو صفحه مادر ضمیمشون کن بجای اینکه تو صفحه پاپ آپ لودشون کنی
یا اگه اصرار داری تو صفحه پاپ آپ باشن کدا بازم بزارشون توی یه فایل Js و توی صفحه پاپ آپ چک کن هر بار اجرا میشه که اگه این فایل اینکلود نشده بود اینکلودش کن که با یه سرچ ساده میتونی روش های زیادی برای این پیدا کنی

ممنون از جوابی که دادی
تعداد popup ها زیاده بخاطر همین جاوا اسکریپت و با فرم خودش لود میکنم
میشه بگی چی باید سرچ کنم؟

plague
چهارشنبه 08 دی 1395, 17:46 عصر
راه زیاد داره تقریبا همشون تهش اینه که بجای html باید با جاوا اسکریپت ضمیمه کنی فایل رو تو صفحه
مثلا تو فایل صفحه x.js یه متغیر تعریف میکنی که با چک کردن این بفهمی فایل ضمیمه شده یا نه

var x_is_included = true ;

بعد وقتی میخای فایل رو ضمیمه کنی

if (typeof x_is_included == "undefined") {
var e = document.createElement("script");
e.src = "x.js";
e.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(e);
}

سرچ کن

check if .js file already included

کلی روش هست فکر کنم یه کتابخانه برای اینکار باشه با جی کوئری هم احتمالا تمیز تر از این میشه نوشت

sedamorde
چهارشنبه 08 دی 1395, 18:01 عصر
راه زیاد داره تقریبا همشون تهش اینه که بجای html باید با جاوا اسکریپت ضمیمه کنی فایل رو تو صفحه
مثلا تو فایل صفحه x.js یه متغیر تعریف میکنی که با چک کردن این بفهمی فایل ضمیمه شده یا نه

var x_is_included = true ;

بعد وقتی میخای فایل رو ضمیمه کنی

if (typeof x_is_included == "undefined") {
var e = document.createElement("script");
e.src = "x.js";
e.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(e);
}

سرچ کن

check if .js file already included

کلی روش هست فکر کنم یه کتابخانه برای اینکار باشه با جی کوئری هم احتمالا تمیز تر از این میشه نوشت


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

اگرتعداد popup ها زیاد در صورت امکان از Angular Js استفاده کن. برای انجام این کارها راه حل‌های خیلی خوبی داره (البته باید خوب یادش گرفت). کد و قالب‌ها را جدا لود می‌کنه و بدون تداخل بارها میشه استفاده کرد.

موفق باشید.