💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۹ حسینی
خطا هنگام submit
احمدرضا فاطمی کیا حل شده توسط احمدرضا فاطمی کیا

سلام وقتی اطلاعات رو می‌خواهم alert بگیرم میره تو صفحه بعد و این ارور را می‌دهد

Not Found

The requested URL was not found on this server.

Apache/2.4.56 (Win64) OpenSSL/1.1.1t PHP/8.2.4 Server at localhost Port 80

 

 

const defaultLocation=[35.699,51.255];
const defaultZoom=15;
const map = L.map('map').setView(defaultLocation,defaultZoom);
const tiles = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
    maxZoom: 19,
    attribution: '&copy; <a href="#">7map</a>'
}).addTo(map);
document.getElementById('map').style.setProperty('height',window.innerHeight + 'px')
// set view in map
// map.setView([29.592, 52.573], defaultZoom);
// show and pin markers
// L.marker(defaultLocation).addTo(map).bindPopup("7Learn Office 1").openPopup();
// L.marker([35.712, 51.338]).addTo(map).bindPopup("7Learn Office 2");
// map.on('popupopen', function() {
//     alert('PopUp Opened!');
// });
// get view Bound information
// var northLine = map.getBounds().getNorth(); // khat shomali
// var westLine = map.getBounds().getWest(); // khat Gharbi
// var southLine = map.getBounds().getSouth(); // khat Jonoobi
// var eastLine = map.getBounds().getEast(); // khat Sharghi
// Use Map Events
map.on('zoomend', function() {
    // alert(map.getBounds().getCenter());
    // 1 : get bound lines
    // 2 : send bound lines to server
    // 3 : search locations in map windows
    // 4 : display location markers in map
});
map.on('dblclick', function(event){
     L.marker(event.latlng).addTo(map);
     $('.modal-overlay').fadeIn(500);
     $('#lat-display').val(event.latlng.lat)
     $('#lng-display').val(event.latlng.lng)
})
// find Current Location (at first, Use Shekan.ir)
// var current_position, current_accuracy;
// map.on('locationfound', function(e) {
//     // if position defined, then remove the existing position marker and accuracy circle from the map
//     if (current_position) {
//         map.removeLayer(current_position);
//         map.removeLayer(current_accuracy);
//     }
//     var radius = e.accuracy;
//     current_position = L.marker(e.latlng).addTo(map)
//         .bindPopup("دقت تقریبی: " + radius + " متر").openPopup();
//     current_accuracy = L.circle(e.latlng, radius).addTo(map);
// });
// map.on('locationerror', function(e) {
//     alert(e.message);
// });
// wrap map.locate in a function    
// function locate() {
//     map.locate({ setView: true, maxZoom: defaultZoom });
// }
// call locate every 5 seconds... forever
//    setInterval(locate, 5000);
$(document).ready(function(){
    $('form#addLocationForm').submit(function(e){
        e.preventDefault();
        alert($(this).serialize());
    });
    $('.modal-overlay .close').click(function(){
        $('.modal-overlay').fadeOut();
    })
})
js

کد‌های فایل addlocation

<?php 
include '../bootstrap/init.php';
if(!isAjaxRequest()){
    diepage('is not ajax!');
}
// is ajax request
var_dump($_POST);
حسینی ۲۵ آذر ۱۴۰۲، ۱۴:۵۲

کد‌های index

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>7Map</title>
    <link href="favicon.png" rel="shortcut icon" type="image/png">
    <link rel="stylesheet" href="assets/css/styles.css" />
    <link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" />    
    <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js"></script>
</head>
<body>
    <div class="main">
        <div class="head">
            <input type="text" id="search" placeholder="دنبال کجا می‌گردی؟">
        </div>
        <div class="mapContainer">
            <div id="map"></div>
        </div>
    </div>
    <div class="modal-overlay" style="display: none;" >
        <div class="modal">
            <span class="close">x</span>
            <h3 class="modal-title">ثبت لوکیشن</h3>
            <div class="modal-content">
                <form id='addLocationForm' action="<?= site_url("process/addLocation.php") ?>" method="post">
                <div class="field-row">
                            <div class="field-title">مختصات</div>
                            <div class="field-content">
                                <input type="text" name='lat' id="lat-display" readonly style="width: 160px;text-align: center;">
                                <input type="text" name='lng' id="lng-display" readonly style="width: 160px;text-align: center;">
                            </div>
                    </div>
                    <div class="field-row">
                            <div class="field-title">نام مکان</div>
                            <div class="field-content">
                                <input type="text" name="title" id='l-title' placeholder="مثلا: دفتر مرکزی سون لرن">
                            </div>
                    </div>
                    <div class="field-row">
                        <div class="field-title">نوع</div>
                        <div class="field-content">
                            <select name="type" id='l-type'>
                            <?php foreach(locationType as $key=>$value): ?>
                            <option value="<?=$key?>"><?=$value?></option>
                            <?php endforeach; ?>
                            </select>
                        </div>
                    </div>
                    <div class="field-row">
                        <div class="field-title">ذخیره نهایی</div>
                        <div class="field-content">
                            <input type="submit" value=" ثبت ">
                        </div>
                    </div>
                    <div class="ajax-result"></div>
                </form>
            </div>
        </div>
    </div>
    <script src="assets/js/jquery.min.js"></script>
    <script src="assets/js/script.js"></script>
</body>
</html>
حسینی ۲۵ آذر ۱۴۰۲، ۱۴:۵۳

کد‌های init

<?php
include "constants.php";
include BASE_PATH . "bootstrap/config.php";
include BASE_PATH . "libs/helpers.php";
try {
    $pdo = new PDO("mysql:dbname=$database_config->db;host={$database_config->host}", $database_config->user, $database_config->pass);
} catch (PDOException $e) {
    diePage('Connection failed: ' . $e->getMessage());
}
حسینی ۲۵ آذر ۱۴۰۲، ۱۴:۵۵

سلام

خطای 404 هست و احتمالا آدرس اکشن فرم رو درست ندادید. 

چک کنید آدرس رو درست داده باشید. 

بهترین پاسخ
احمدرضا فاطمی کیا ۲۶ آذر ۱۴۰۲، ۱۳:۵۷

ممنون اون مشکل حل شد الان تو مرحله بعد که یک اریه باید بر گردد توی کنسول این ارور میاد

Access to XMLHttpRequest at 'http://localhost/7learn.php/7map/process/addLocation.php' from origin 'http://7learn.php' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
jquery.min.js:4 
       
       
      POST http://localhost/7learn.php/7map/process/addLocation.php net::ERR_FAILED 404 (Not Found)
send @ jquery.min.js:4
ajax @ jquery.min.js:4
(anonymous) @ script.js:85
dispatch @ jquery.min.js:3
r.handle @ jquery.min.js:3

حسینی ۲۶ آذر ۱۴۰۲، ۱۷:۳۷

سلام،

آدرسی که برای ارسال درخواست ajax در jquery استفاده کردید localhost هست یعنی به این شکل:

http://localhost/7learn.php/7map/process/addLocation.php

ولی آدرسی که در مرورگر میزنید تا سایت رو باز کنید:

http://7learn.php

برای همین خطای CORS پیش میاد چون مبدا ارسال درخواست با آدرس مقصد با هم تفاوت داره. سایتو به این شکل در مرورگر باز کنید و تست کنید:

http://localhost/7learn.php/7map
محسن موحد ۲۷ آذر ۱۴۰۲، ۱۲:۴۲

سلام اینو زدم خطایی 404 میده 

http://localhost/7learn.php/7map
حسینی ۲۷ آذر ۱۴۰۲، ۱۵:۱۳
define('SITE_ITILE','7Map pro');
define('BASE_URL','http://localhost/7learn.php/7map');
define('BASE_PATH','C:/xampp/htdocs/7Learn.php/7map/');
 اینا از پیش تعریف شده است
حسینی ۲۷ آذر ۱۴۰۲، ۱۵:۱۴

ساختار فولدر بندی فایل‌های پروژتون شات بگیرید ببینم.

در کل من میخوام شما با localhost سایتتون رو باز کنید. این موضوع در مقدمات php یاد گرفته اید. همچنین میتونید با دامین مجازی هم سایتو باز کنید اما اگر با دامین مجازی بخواید کار کنید، پس آدرس‌های ajax رو هم باید براساس دامین مجازی کنید. اگر در مورد cors مطالعه کنید منظور منو متوجه میشوید.

محسن موحد ۳۰ آذر ۱۴۰۲، ۰۳:۵۵