PDA

View Full Version : سوال: redirect به دایرکتوری با وارد کردن نام آن



flat_00
سه شنبه 05 اردیبهشت 1402, 19:35 عصر
سلام من یک کد جاوا اسکریپت دارم که کار کردش به این صورت هست که یک فرم html دارم که شامل یک input و یک دکمه هست. اگر کادر input خالی باشد بعد از زدن دکمه، کاربر به صفحه "error.html" منتقل میشود. اگر نام دایرکتوری وارد شود ولی دایرکتوری به آن نام وجود نداشته باشد کاربر به صفحه "error2.html" منتقل خواهد شد. اما یک مشکل وجود دارد. اگر نام دایرکتوری وجود داشته باشد (مثل 333)، کاربر باید بعد از زدن دکمه به دایرکتوری 333 هدایت می شود ولی اینطور نیست و در عوض، صفحه "error2.html" دوباره نشان می دهد. آیا راهی برای حل این مشکل وجود دارد؟ ممنون<br>



<form action="javascript:void(0)" name="f1" onsubmit="jump();">
<input type="text" name="k1" value="" placeholder="Enter the name of the directory"/>
<input id="submit" type="submit" name="s1" value="check">
</form>

<script>
function jump() {
var directory = document.f1.k1.value.trim();
if (directory === "") {
window.location.href = 'error.html';
document.f1.k1.focus();
return;
}
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4) {
if (this.status == 200) {
window.location.href = directory;
} else {
window.location.href = 'error2.html';
}
}
};
xhttp.open("HEAD", directory, true);
xhttp.send();
}
</script>

ROSTAM2
سه شنبه 05 اردیبهشت 1402, 20:45 عصر
سلام من یک کد جاوا اسکریپت دارم که کار کردش به این صورت هست که یک فرم html دارم که شامل یک input و یک دکمه هست. اگر کادر input خالی باشد بعد از زدن دکمه، کاربر به صفحه "error.html" منتقل میشود. اگر نام دایرکتوری وارد شود ولی دایرکتوری به آن نام وجود نداشته باشد کاربر به صفحه "error2.html" منتقل خواهد شد. اما یک مشکل وجود دارد. اگر نام دایرکتوری وجود داشته باشد (مثل 333)، کاربر باید بعد از زدن دکمه به دایرکتوری 333 هدایت می شود ولی اینطور نیست و در عوض، صفحه "error2.html" دوباره نشان می دهد. آیا راهی برای حل این مشکل وجود دارد؟ ممنون<br>



<form action="javascript:void(0)" name="f1" onsubmit="jump();">
<input type="text" name="k1" value="" placeholder="Enter the name of the directory"/>
<input id="submit" type="submit" name="s1" value="check">
</form>

<script>
function jump() {
var directory = document.f1.k1.value.trim();
if (directory === "") {
window.location.href = 'error.html';
document.f1.k1.focus();
return;
}
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4) {
if (this.status == 200) {
window.location.href = directory;
} else {
window.location.href = 'error2.html';
}
}
};
xhttp.open("HEAD", directory, true);
xhttp.send();
}
</script>


How To Redirect to Another Webpage (w3schools.com) (https://www.w3schools.com/howto/howto_js_redirect_webpage.asp)

flat_00
سه شنبه 05 اردیبهشت 1402, 21:30 عصر
How To Redirect to Another Webpage (w3schools.com) (https://www.w3schools.com/howto/howto_js_redirect_webpage.asp)

سلام. میشه بفرمایید اشکال کدی که من بالا گذاشتم چیه؟ همه چیز به نظر خوب کار میکنه. فقط اگر دایرکتوری وجود داشته باشه با نوشتن اسمش قاعدتا باید window.location.href = directory; رو اجرا کنه ولی بخش else رو اجرا میکنه یعنی window.location.href = 'error2.html'; نمایش داده میشه در صورتی که باید مثلا پوشه 333 رو نشون بده.

mazoolagh
جمعه 08 اردیبهشت 1402, 09:38 صبح
سلام و روز خوش

منطق کد ظاهرا باید درست باشه و اشکالی دیده نمیشه.

ولی بشرط این که اون <b></b> رو از action بردارین!
فکر کنم موقع کپی کردن کد، فرمت اون هم کپی شده: "javascript:void(0)"

flat_00
جمعه 08 اردیبهشت 1402, 15:21 عصر
سلام و روز خوش

منطق کد ظاهرا باید درست باشه و اشکالی دیده نمیشه.

ولی بشرط این که اون <b></b> رو از action بردارین!
فکر کنم موقع کپی کردن کد، فرمت اون هم کپی شده: "javascript:void(0)"

انجام دادم نشد حتی xhttp.open("HEAD", directory, true); رو به xhttp.open("HEAD", directory.toString(), true); تغییر دادم باز کار نکرد.

mazoolagh
شنبه 09 اردیبهشت 1402, 18:36 عصر
شاید فقط فایل رو در مرورگر باز میکنین.
این کد شما برای این که درست اجرا بشه لازم هست که فایل ها روی وب سرور باشه.
ظاهر کد مشکلی نداره.

-----
دلیل خاصی هست که از این روش استفاده میکنین؟
چون راه های ساده تر هم هست، بخصوص اگر فولدرهای شما ثابت باشن.
اگر هم اسامی و تعداد اونها متغییر هست، معمولا یعنی وب پیج شما سمت سرور ساخته میشه و اونجا هم کار راحت هست.