مشکل ارتباط با فایل ajaxHandler

پرسیده شده
فعالیت 1117 روز پیش
دیده شده 493 بار
0

سلام و درود

ببخشید من یه مشکلی دارم که هرچی تست میکنم این کدم درخواستو به فایل ajaxHandler ارسال میکنه، هرچی بررسیش کردم مشکل و خطایی توش ندیدم ، امکانش هست بررسیش کنید ببینید جایی رو اشتباه وارد کردم که درخواست اصن به فایل مقصد نمیرسه یا نه همش درسته ؟

 

  <script>
    $(document).ready(function() {
      $('#addFolderBtn').click(function(e) {
        var input = $('input#addFolderInput');
        $.ajax({
          url: "process/ajaxHandler.php",
          method: "POST",
          data: {
            action: "addFolder",
            folderName: input.val()
          },
          success: function(response) {
            if (is_numeric(response)) {
              var newFolderId = response;
              $('<a href="?folder_id ="' + newFolderId.val() + '"><i class="fa fa-folder"></i>' + input.val() + '</a>').appendTo('ul.folders-list');
            } else {
              alert(response);
            }

          }
        });
      });


      $('#addTaskInput').on('keypress', function(e) {
        if (e.which == 13) {
          $.ajax({
            url: "process/ajaxHandler.php",
            method: "POST",
            data: {
              action: "addTask",
              foldeId: <?= $_GET['folder_id'] ?>,
              taskTitle: $('#addTaskInput').val()
            },
            success: function(response) {
              if (response == 1) {
                //
              } else {
                alert(response);
              }
            }
          });
        }
      });


    });
  </script>
فایل پیوست

امیر ابوئی
امیر ابوئی

16 اسفند 99

1
حذف شده

سلام.

هم غلط املایی دارید هم در قسمت appendTo تگ li رو نذاشتید ابتدا و انتهای تگ a.

is_numeric جزو توابع PHP هست.

newFolderId یک متغیر هست و val() گرفتن ازش اشتباهه.

#folders-list رو بصورت آیدی نامگذاری کردید ولی در appendTo بعنوان کلاس استفاده کردید.

در قسمت addTaskInput تیکه کد PHP رو به این صورت بنویسید:

folderId: <?php echo $_GET['folder_id'] ?? 0 ?>,

تا اگر $_GET تعریف نشده بود، خطایی رخ نده و مقدار صفر جایگزین شده باشه.

ضمن اینکه این قسمت غلط املایی داشتید در تعریف متغیرها سمت ajaxHandler.

وقتی کد ajax مینویسید در قسمت PHP باید خروجی مناسب ارسال کنید تا با کدهای جاوااسکریپت بتونید تجزیه و تحلیلش کنید و نتیجه ی مناسب رو قرار بدید. با توجه به کدهای ajaxHandler.php خروجی های اضافه رو باید کامنت کنید:

//var_dump($_POST['folderName']);
//echo "I Get Ajax Request :))";

نباید چنتا خروجی بفرستید.

در قسمت case : addTask هم همینطور:

//echo "I Get Ajax Request :))";

در کد init.php ادرس دهی constants.php اشتباهه. چون خودش داخل فولدر bootstrap هست و شما دارید دوباره از همونجا آدرس میدید. بنابراین یا bootstrap رو حذف کنید یا BASE_PATH رو به ابتداش اضافه کنید:

include "constants.php";

 

نتیجه ی نهایی کد:

<script>
    $(document).ready(function() {
      $('#addFolderBtn').click(function(e) {
        var input = $('input#addFolderInput');
        $.ajax({
          url: "process/ajaxHandler.php",
          method: "POST",
          data: {
            action: "addFolder",
            folderName: input.val()
          },
          success: function(response) {
            if (response >= 1) {
              var newFolderId = response;
              $('<li><a href="?folder_id ="' + newFolderId + '"><i class="fa fa-folder"></i>' + input.val() + '</a></li>').appendTo('#folders-list');
            } else {
              alert(response);
            }

          }
        });
      });


      $('#addTaskInput').on('keypress', function(e) {
        if (e.which == 13) {

          $.ajax({
            url: "process/ajaxHandler.php",
            method: "POST",
            data: {
              action: "addTask",
              folderId: <?php echo $_GET['folder_id'] ?? 0 ?>,
              taskTitle: $('#addTaskInput').val()
            },
            success: function(response) {
              if (response == 1) {
                location.reload();
              } else {
                alert(response);
              }
            }
          });
        }
      });
      $('#addTaskInput').focus();
    });
  </script>

کد PHP:

<?php

include "../bootstrap/init.php";


if (!isAjaxRequest()) {
    diePage("Invalid Request!");
}

if (!isset($_POST['action']) || empty($_POST['action'])) {
    diePage("Invalid Action!");
}

//var_dump($_POST['folderName']);
//echo "I Get Ajax Request :))";


switch ($_POST['action']) {
    case "addFolder":
        if (!isset($_POST['folderName']) || strlen($_POST['folderName']) < 3) {
            echo "Folder name must be at least 3 characters";
            die();
        }
        echo addFolder($_POST['folderName']);
        break;

    case "addTask":
        $folderId = $_POST['folderId'];
        $taskTitle = $_POST['taskTitle'];
        //echo "I Get Ajax Request :))";
        if (!isset($folderId) || empty($folderId)) {
            echo "please choose your folder to add Task into it!";
            die();
        }

        if (!isset($taskTitle) || strlen($taskTitle) > 3) {
            echo "Task title must be at least 3 characters!";
            die();
        }

        echo addTask($taskTitle, $folderId);
        break;

    default:
        diePage("Invalid Request!");
}

 

 

 

فایل پیوست

محسن موحد

توسط

محسن موحد

17 اسفند 99

حذف شده
سپاس از پاسخ جامع و کامل تون :)) همه مشکلات رو برطرفش کردم و اون تیکه کدهای اضافی رو هم موقعی که بقیه رو کامنت کرده بودم برای تست اضافه کرده بودم که موقع ارسال همه اش رو از کامنتی در آوردم ولی با اینحال الآن که همه کدهارو مشکل شون رو حل کردم و حتی در نهایت محض اطمنیان کدهای نهایی شمارو هم جایگزین کردم، ولی نمیدونم چرا باز درست کار نمیکنه، ارتباط با دیتابیس هم مشکلی نداره چون فرایند get و delete رو به درستی انجام میده!!
امیر ابوئی

17 اسفند 99

حذف شده
مشکل برطرف شد، اون آدرس دهی فایل constants داخل init رو اصلاحش کردم ولی الان دوتا سوال دارم: − یکی اینکه این آدرس دهی فایل که مشکل داشت و با اصلاحش مشکلش حل شد، چرا برای بقیه عملیات ها مشکل ایجاد نمیکرد؟ − مورد دوم اینکه اگر بخواییم از مسیر روت پروژه مسیر بدیم بهش بجای BASE_PATH از چه طریقی میشه انجامش داد؟
امیر ابوئی

17 اسفند 99

0
حذف شده

سلام و احترام

لطفا فایلاتون رو کامل بزارید تا داخل سیستم خودم اجرا کنم کداتون رو

فایل پیوست

امیر صالحی

توسط

امیر صالحی

16 اسفند 99

0
حذف شده

.

فایل پیوست
toDoList-1.zip
41.3 KB

امیر ابوئی

توسط

امیر ابوئی

16 اسفند 99

0
حذف شده

سپاس از پاسخ جامع و کامل تون :))

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

ولی با اینحال الآن که همه کدهارو مشکل شون رو حل کردم و حتی در نهایت محض اطمنیان کدهای نهایی شمارو هم جایگزین کردم، ولی نمیدونم چرا باز درست کار نمیکنه، ارتباط با دیتابیس هم مشکلی نداره چون فرایند get و delete رو به درستی انجام میده!!

فایل پیوست

امیر ابوئی

توسط

امیر ابوئی

17 اسفند 99

حذف شده
دوباره فایلو بذارید...
محسن موحد

17 اسفند 99