AMcoder - javascript, python, java, html, php, sql

Վերահղումը դեպի servlet ձախողվեց

Ես ունեմ EditPhotos անունով սերվիլետ, որը, հավատացեք, թե ոչ, օգտագործվում է որոշակի տարրի հետ կապված լուսանկարները խմբագրելու համար, որը ես մշակում եմ վեբ դիզայնի վրա: Լուսանկարը խմբագրելու URL-ի ուղին է [[SITEROOT]]/EditPhotos/[[ITEMNAME]]:

Երբ գնում եք այս ուղին (GET), էջը լավ է բեռնվում: Այնուհետև կարող եք սեղմել «ջնջել» հղման վրա, որը տեղադրվում է նույն էջում՝ ասելով, որ ջնջի լուսանկարը: Servlet-ը պատշաճ կերպով ստանում է այս ջնջման հրամանը և հաջողությամբ ջնջում լուսանկարը: Այնուհետև այն ուղարկում է վերահղում դեպի առաջին էջ (GET):

Ինչ-ինչ պատճառներով այս վերահղումը ձախողվում է: Չգիտեմ, թե ինչպես և ինչու, բայց օգտագործելով HTTPFox plugin-ը firefox-ի համար, տեսնում եմ, որ POST հարցումն ի պատասխան ստանում է 0 բայթ և ունի NS_BINDING_ABORTED կոդը:

Կոդը, որը ես օգտագործում եմ վերահղումը ուղարկելու համար, նույն կոդը է, որն օգտագործել եմ ամբողջ կայքում՝ վերահղումներ ուղարկելու համար.

response.sendRedirect(Constants.SITE_ROOT + "EditPhotos/" + itemURL);

Ես ստուգել եմ վերջնական URL-ը, որն ուղարկում է վերահղումը, և դա միանշանակ ճիշտ է, բայց բրաուզերը երբեք չի ստանում վերահղումը։ Ինչո՞ւ։


Պատասխանները:


1

Կարդացեք սերվերի տեղեկամատյանները: Հետագծի մեջ տեսնու՞մ եք IllegalStateException: response already committedsendRedirect() կանչով:

Եթե ​​այո, ապա դա նշանակում է, որ վերահղումը ձախողվել է, քանի որ պատասխանի վերնագրերն արդեն ուղարկված են: Համոզվեք, որ դուք ընդհանրապես չեք դիպչում HttpServletResponse-ին, նախքան sendRedirect()-ին զանգահարելը: Վերահղում, մասնավորապես, գոյություն ունի Location պատասխանի վերնագրի՝ նոր URL-ով որպես արժեք:

Եթե ​​ոչ, ապա դուք հավանաբար կատարում եք հարցումը JavaScript-ի միջոցով, որն իր հերթին չի կարողացել կարգավորել նոր տեղադրությունը:

Եթե ​​ոչ մեկը այդպես չէ, կամ դուք դեռ չեք կարողանում դա հասկանալ, ապա մեզ կհետաքրքրի հնարավոր ամենափոքր կոդի հատվածը, որը վերարտադրում է հենց այս խնդիրը: Այնուհետև թարմացրեք ձեր հարցը՝ այն ներառելու համար:


Թարմացրեք ըստ մեկնաբանությունների, մեղավորն իսկապես JavaScript-ում է: XMLHttpRequest POST-ի վերահղումը չի աշխատի: Դուք օգտվո՞ւմ եք տնային XMLHttpRequest ֆունկցիաներից կամ գրադարանից, ինչպիսին jQuery-ն է: Եթե ​​jQuery, խնդրում ենք կարդալ այս հարցը ուշադիր: Դա հանգում է նրան, որ դուք պետք է վերադարձնեք կոնկրետ պատասխան, այնուհետև թույլ տվեք JS/jQuery-ին ինքնուրույն կատարել նոր window.locationը:

01.02.2011
  • Չհաջողվեց գտնել IllegalStateException կամ որևէ բացառություն տեղեկամատյաններում: POST-ն ինքնին ուղարկվում է JavaScript-ի միջոցով, կարո՞ղ է սա լինել խնդիրը: Ես կփորձեմ գտնել խնդրի կարճ հատվածը: 02.02.2011
  • Վա՜յ, մոռացել եմ մի որոշ ժամանակ թարմացնել էջը: Ինձ հաջողվեց շտկել այն՝ փոխելով JavaScript-ը, այն տեղադրել եմ ստորև։ 02.02.2011

  • 2

    Պարզվում է, որ խնդիրն այն JavaScript-ն էր, որը ես օգտագործում էի POST-ն ուղարկելու համար: Ես ի սկզբանե ունեի սա.

    <a href="#" onClick="javascript:deletePhoto(781)">Delete</a>
    

    Եվ ամեն ինչ շտկվեց, երբ ես այն փոխեցի հետևյալի.

    <a href="#" onClick="javascript:deletePhoto(781); return false;">Delete</a>
    

    DeletePhoto ֆունկցիան հետևյալն է.

    function deletePhoto(photoID) {
        doPost(document.URL, {'action':'delete', 'id':photoID});
    }
    
    function doPost(path, params) {
        var form = document.createElement("form");
        form.setAttribute("method", "POST");
        form.setAttribute("action", path);
        for(var key in params) {
            var hiddenField = document.createElement("input");
            hiddenField.setAttribute("type", "hidden");
            hiddenField.setAttribute("name", key);
            hiddenField.setAttribute("value", params[key]);
            form.appendChild(hiddenField);
        }
        document.body.appendChild(form);
        form.submit();
    }
    
    02.02.2011
  • Չի նախատեսված կոշտ լինելու, բայց նման JavaScript-ները միշտ ինձ քոր են պատճառում: Ինչու՞ ոչ միայն կոճակով ձև: Դուք կարող եք պարզապես օգտագործել CSS կոճակը ոճավորելու համար, որպեսզի անհրաժեշտության դեպքում պարզ հղում լինի: 02.02.2011
  • Անկեղծ ասած, ես վստահ չեմ, թե ինչու, բայց կարծում եմ, որ այն ժամանակ ավելի կոկիկ էի դա անել այս կերպ: Ունենալով շատ փոքրիկ ձևեր և փորձելով դրանք ոճավորել և դասավորել պատշաճ կերպով, ինձ CSSeadaches կբերի: 02.02.2011
  • Ենթադրվում է, որ կայքերը հավասարապես կաշխատեն JS-ի անջատվածությամբ (բջջային հեռախոսներ): Ենթադրվում է, որ JS-ը պետք է կատարի միայն առաջադեմ բարելավումներ: CSS-ը բավականին աննշան է, երբ հասկանաք այն: 02.02.2011
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..