דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. שליחת הודעות שגיה לצד לקוח - בעיה

שליחת הודעות שגיה לצד לקוח - בעיה

מתוזמן נעוץ נעול הועבר תכנות
13 פוסטים 3 כותבים 261 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ASSA מנותק
    ASSA מנותק
    ASS
    כתב ב נערך לאחרונה על ידי
    #1

    היי
    יש לי בצד שרת קוד PHP ששולח שגיאות אם קיימות בטופס:

            // Return any validation errors for the first step without proceeding
            if(count($errors) > 0) {
                
                header('Content-Type: application/json');
                echo json_encode(['errors' => $errors, 'db_errors' => $db_errors]);
                exit;
           
            }
    

    ובצד לקוח קוד שאמור להציג אותם:

            <script>
            $(document).ready(function() {
                $('.next').click(function(e) {
                    e.preventDefault();
    
                    // Get the current tab
                    var currentTab = $('.tab-pane.active').attr('id');
                    console.log('Submitting form: ' + currentTab); // Debugging line
    
                    // Determine the correct form id based on the current tab
                    var formId;
                    switch(currentTab) {
                        case 'first':
                            formId = 'profileForm';
                            break;
                        case 'second':
                            formId = 'bizForm';
                            break;
                        //case 'third':
                            //formId = 'otherForm';
                            //break;
                    }
    
                    // Delay the serialization and the AJAX request
                    setTimeout(function() {
                        // Serialize the form data
                        var formData = $('#' + formId).serializeArray();
                        console.log('Serialized form data: ', formData); // Debugging line
    
                        $.ajax({
                            type: "POST",
                            url: "validation.php",
                            data: {
                                'form': currentTab,
                                'formData': formData
                            },
                            success: function(data) {
                                console.log('Server response: ', data); // Debugging line
    
                                // Check if there are any errors
                                if (data.errors && Object.keys(data.errors).length > 0) {
                                    // Log the errors for debugging
                                    console.error('Validation errors:', data.errors);
    
                                    // Display each error using the toast plugin
                                    for(var key in data.errors) {
                                        if(data.errors.hasOwnProperty(key)) {
                                            $.toast({
                                                heading: 'Error',
                                                text: data.errors[key], // get the error message using the key
                                                hideAfter: 8000, // in milli seconds
                                                showHideTransition: 'slide',
                                                stack: 3,
                                                position: 'mid-center',
                                                icon: 'warning',
                                                bgColor: '#FFC800',
                                                loaderBg: '#FF9F00', // To change the background
                                                textColor: 'white',
                                                textAlign: 'left'
                                            });
                                        }
                                    }
                                } else if (data.success) {
                                    // If success is true, display success message and/or move to next tab
                                    console.log('Form submission successful');
                                    // Your code to switch to the next tab or show a success message
                                }
                            }
                        });
                    }, 500); // 500 ms delay
                });
            });
    
    
            </script>
    

    בקונסולה לא מופיע , לא:

                                    console.error('Validation errors:', data.errors);
    
    

    וגם לא:

                                    console.log('Form submission successful');
    
    

    מה שואמר ששני התנאים לא מתקמיים, אשמח לעזרה אם מישהו יכול להבין את הבעיה, מדוע לא מופיעות שגיאות ומדוע לא מופיעה בקונסולה אחת משני ההודעות.

    תודה רבה

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #2

      אתה צריך ללמוד להסתכל בNetwork שבכלי המפתחים.
      מה השורה הזו:

                                  console.log('Server response: ', data); // Debugging line
      

      פולטת?

      ההתניה שלך מניחה ש: או שיש אובייקט data.errors עם ערכים, או שיש success. מהקוד של הphp שם רואים שאתה מנסה לשלוח שגיאות לא מוכרח שאין אפשרות שלישית.

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      ASSA תגובה 1 תגובה אחרונה
      0
      • ASSA מנותק
        ASSA מנותק
        ASS
        השיב לdovid ב נערך לאחרונה על ידי
        #3

        @dovid
        אני יודע היטב להסתכל ב Network .
        הפלט הוא נתוני הטופס, כצפוי.

        תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          כתב ב נערך לאחרונה על ידי dovid
          #4

          אני ביקשתי שתשתף אותי בdata, בשביל שאסביר לך למה שני התאנים לא מתקיימים.
          אתה לא חייב.

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          ASSA תגובה 1 תגובה אחרונה
          2
          • ASSA מנותק
            ASSA מנותק
            ASS
            השיב לdovid ב נערך לאחרונה על ידי ASS
            #5

            @dovid
            אשמח לשתף.
            זה הפלט, כמה שגיאות שלמיטב ידיעתי לא קשורות ונתוני הטופס:

            VM362:8338 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'facebook.json')
                at getConfig (<anonymous>:8338:42)
                at ClickToLoad.init (<anonymous>:11132:37)
                at ClickToLoad.callInit (<anonymous>:3180:18)
                at <anonymous>:11424:33
                at Array.forEach (<anonymous>)
                at Object.init (<anonymous>:11422:26)
            getConfig @ VM362:8338
            init @ VM362:11132
            callInit @ VM362:3180
            (anonymous) @ VM362:11424
            init @ VM362:11422
            await in init (async)
            apply @ VM362:11490
            (anonymous) @ VM371:3
            (anonymous) @ VM371:5
            inject @ inject.js:114
            (anonymous) @ inject.js:208
            Show 2 more frames
            Show less
            vendor.min.js:24892 Uncaught TypeError: Cannot read properties of undefined (reading 'length')
                at Object.getRegexMask (vendor.min.js:24892:404)
                at l.init (vendor.min.js:24899:27)
                at new n (vendor.min.js:24899:418)
                at HTMLInputElement.k (vendor.min.js:24901:227)
                at Function.each (vendor.min.js:381:19)
                at jQuery.fn.init.each (vendor.min.js:203:17)
                at a.fn.mask (vendor.min.js:24901:253)
                at HTMLInputElement.<anonymous> (app.min.js:1:11969)
                at Function.each (vendor.min.js:381:19)
                at jQuery.fn.init.each (vendor.min.js:203:17)
            getRegexMask @ vendor.min.js:24892
            l.init @ vendor.min.js:24899
            n @ vendor.min.js:24899
            k @ vendor.min.js:24901
            each @ vendor.min.js:381
            each @ vendor.min.js:203
            a.fn.mask @ vendor.min.js:24901
            (anonymous) @ app.min.js:1
            each @ vendor.min.js:381
            each @ vendor.min.js:203
            t.initMask @ app.min.js:1
            t.init @ app.min.js:1
            t.init @ app.min.js:1
            (anonymous) @ app.min.js:1
            (anonymous) @ app.min.js:1
            vendors.js:58 Refused to load the script 'https://js.stripe.com/v3' because it violates the following Content Security Policy directive: "script-src 'self' 'wasm-unsafe-eval' 'inline-speculation-rules'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.
            
            (anonymous) @ vendors.js:58
            (anonymous) @ vendors.js:58
            N @ vendors.js:58
            (anonymous) @ vendors.js:58
            Promise.then (async)
            65085 @ vendors.js:58
            o @ content-script.js:7411
            95133 @ vendors.js:58
            o @ content-script.js:7411
            86493 @ vendors.js:401
            o @ content-script.js:7411
            5309 @ content-script.js:1118
            o @ content-script.js:7411
            (anonymous) @ content-script.js:7411
            o.O @ content-script.js:7411
            t @ content-script.js:7411
            (anonymous) @ vendors.js:2
            Show 16 more frames
            Show less
            vendors.js:58 Error: Failed to load Stripe.js
                at HTMLScriptElement.<anonymous> (vendors.js:58:1979)
            (anonymous) @ vendors.js:58
            Promise.catch (async)
            65085 @ vendors.js:58
            o @ content-script.js:7411
            95133 @ vendors.js:58
            o @ content-script.js:7411
            86493 @ vendors.js:401
            o @ content-script.js:7411
            5309 @ content-script.js:1118
            o @ content-script.js:7411
            (anonymous) @ content-script.js:7411
            o.O @ content-script.js:7411
            t @ content-script.js:7411
            (anonymous) @ vendors.js:2
            Show 13 more frames
            Show less
            null:1 
                    
                    
                   GET https://stockermart.com/GOODIES/null 404 (Not Found)
            goodies_enrollment.php:406 Submitting form: first
            goodies_enrollment.php:426 Serialized form data:  (11) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]0: {name: 'Company_Name', value: '%'}1: {name: 'Company_number', value: '955555555'}2: {name: 'type_business', value: 'חנות קמעונאית'}3: {name: 'City', value: 'לוד'}4: {name: 'Address', value: 'יע'}5: {name: 'Zip', value: '0023453'}6: {name: 'contact', value: 'מורדכי'}7: {name: 'Company_phone', value: '055-555-5555'}8: {name: 'Company_phone2', value: '055-555-5555'}9: {name: 'Company_email', value: 'd@gmail.com'}10: {name: 'business_size', value: '31-100'}length: 11[[Prototype]]: Array(0)
            goodies_enrollment.php:406 Submitting form: second
            goodies_enrollment.php:426 Serialized form data:  [{…}]0: {name: 'biz_type', value: 'מזומן'}length: 1[[Prototype]]: Array(0)
            
            

            ניתן לראות ששם החברה אינו תקין, כי רשום %, וסקריפט האימות שלו אינו מאפשר את זה:

            switch ($form) {
                case 'first':
                    $companyName = test_input($parsedData["Company_Name"] ?? '');
                    if ($companyName === '') {
                        $errors['Company_Name'] = "חסר שם חברה";
                    } elseif (!preg_match("/^[A-Za-zא-ת0-9 ]*$/u", $companyName)) {
                        $errors['Company_Name'] = "שם החברה יכול להכיל אותיות ומספרים בלבד";
            

            לכן אמורה להתקבל שגיאה.

            תודה רבה על העזרה

            תגובה 1 תגובה אחרונה
            1
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #6

              אינני רואה בפלט שצירפת את המילים Server response ומכאן שהפלט לא כולל את את מה שהשורה הנ"ל אמורה לכתוב.
              אז או שזה בכלל לא מתרחש (תוכל לבדוק עם נקודת עצירה)
              או שלא כללת את כל הפלט.

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              ASSA תגובה 1 תגובה אחרונה
              0
              • ASSA מנותק
                ASSA מנותק
                ASS
                השיב לdovid ב נערך לאחרונה על ידי
                #7

                @dovid
                זה כל הפלט, זה מה שכתבתי בפוסט הראשון, אני לא מצליח להבין את זה, כי השגיאה מתרחשת, ובוודאות נוצרת ע"י הסקריפט:

                        // Return any validation errors for the first step without proceeding
                        if(count($errors) > 0) {
                            
                            $parsedDataString = print_r($errors, true);
                            file_put_contents('parsedData.txt', $parsedDataString);
                
                            header('Content-Type: application/json');
                            echo json_encode(['errors' => $errors, 'db_errors' => $db_errors]);
                            exit;
                       
                        }
                

                כפי שניתן לראות הכנסתי כתיבה של השגיאות לקובץ, בתוך הקובץ מופיעה השגיאה, להלן פלט הקובץ:

                Array
                (
                    [Company_Name] => שם החברה יכול להכיל אותיות ומספרים בלבד
                )
                
                

                כלומר, ברור שיש שגיאה, אך אני לא מבין מדוע

                success: function(data) {
                                            console.log('Server response: ', data); // Debugging line
                

                בכלל לא פועל, עוד לפני

                if (data.errors && Object.keys(data.errors).length > 0) {
                
                צדיק תמיםצ תגובה 1 תגובה אחרונה
                0
                • צדיק תמיםצ מנותק
                  צדיק תמיםצ מנותק
                  צדיק תמים
                  השיב לASS ב נערך לאחרונה על ידי
                  #8

                  @ASS השרת שלך מחזיר תשובה תקינה (HTTP STATUS 200)?
                  $.ajax מפעיל את הקאלבק success רק במקרה כזה, אם השרת לא מגיב או מגיב עם קוד שגיאה (לדוגמה HTTP STATUS 500) יופעל הקאלבק error - או במקרה שלך שהוא לא מוגדר, לא יראו כלום...

                  Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                  טיפים

                  תגובה 1 תגובה אחרונה
                  1
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    כתב ב נערך לאחרונה על ידי dovid
                    #9

                    ובדיוק בגלל מה שכתב @צדיק-תמים, לך לNetwork ותנקה שמה את כל השורות,
                    ואז תלחץ על ה.next ותראה איך נראית השורה, והאם היא 200 ומה הResponse שלה.

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    2
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #10

                      בקשר למה שאמר @צדיק-תמים תוכל לבדיקה להחליף את המילה success במילה complete ואז זה מופעל גם במקרה של error וגם בהצלחה.

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      ASSA תגובה 1 תגובה אחרונה
                      1
                      • ASSA מנותק
                        ASSA מנותק
                        ASS
                        השיב לdovid ב נערך לאחרונה על ידי ASS
                        #11

                        @dovid @צדיק-תמים
                        תודה, השרת שלי מחזיר שגיאה, הוספתי את זה:

                                            $.ajax({
                                                type: "POST",
                                                url: "validation.php",
                                                data: {
                                                    'form': currentTab,
                                                    'formData': formData
                                                },
                                                success: function(data) {
                                                    console.log('Server response: ', data); // Debugging line
                        
                                                    // Check if there are any errors
                                                    if (data.errors && Object.keys(data.errors).length > 0) {
                                                        // Log the errors for debugging
                                                        console.error('Validation errors:', data.errors);
                        
                                                        // Display each error using the toast plugin
                                                        for(var key in data.errors) {
                                                            if(data.errors.hasOwnProperty(key)) {
                                                                $.toast({
                                                                    heading: 'Error',
                                                                    text: data.errors[key], // get the error message using the key
                                                                    hideAfter: 8000, // in milli seconds
                                                                    showHideTransition: 'slide',
                                                                    stack: 3,
                                                                    position: 'mid-center',
                                                                    icon: 'warning',
                                                                    bgColor: '#FFC800',
                                                                    loaderBg: '#FF9F00', // To change the background
                                                                    textColor: 'white',
                                                                    textAlign: 'left'
                                                                });
                                                            }
                                                        }
                                                    } else if (data.success) {
                                                        // If success is true, display success message and/or move to next tab
                                                        console.log('Form submission successful');
                                                        // Your code to switch to the next tab or show a success message
                                                    }
                                                },
                                                error: function(jqXHR, textStatus, errorThrown) {
                                                    // Handle server errors, network errors, etc
                                                    console.error('AJAX error: ', textStatus, errorThrown);
                                                    $.toast({
                                                        heading: 'Error',
                                                        text: '.אירעה שגיאה בתהליך העיבוד של הטופס, בבקשה נסה שוב',
                                                        hideAfter: 8000,
                                                        showHideTransition: 'slide',
                                                        stack: 3,
                                                        position: 'mid-center',
                                                        icon: 'error',
                                                        bgColor: '#FF0000',
                                                        loaderBg: '#FF9F00',
                                                        textColor: 'white',
                                                        textAlign: 'left'
                                                    });
                                                },
                                                complete: function() {
                                                    // Code to always run after the AJAX call finishes, regardless of success or error
                                                    //console.log('AJAX request completed.');
                                                    // For example, re-enable the submit button if it was disabled
                                                }
                                            });
                        

                        השאלה למה..

                        תגובה 1 תגובה אחרונה
                        0
                        • ASSA מנותק
                          ASSA מנותק
                          ASS
                          כתב ב נערך לאחרונה על ידי ASS
                          #12

                          אני אבדוק ב Network ויעדכן, תודה רבה

                          תגובה 1 תגובה אחרונה
                          0
                          • ASSA מנותק
                            ASSA מנותק
                            ASS
                            כתב ב נערך לאחרונה על ידי ASS
                            #13

                            @dovid @צדיק-תמים
                            הבעיה הייתה

                            "<?php
                            

                            ה " נכנס לתגובה

                            תודה רבה על העזרה

                            תגובה 1 תגובה אחרונה
                            1

                            בא תתחבר לדף היומי!
                            • התחברות

                            • אין לך חשבון עדיין? הרשמה

                            • התחברו או הירשמו כדי לחפש.
                            • פוסט ראשון
                              פוסט אחרון
                            0
                            • דף הבית
                            • קטגוריות
                            • פוסטים אחרונים
                            • משתמשים
                            • חיפוש
                            • חוקי הפורום