سؤال

أحاول الانتقال إلى الحالة التالية من Webflow باستخدام طلبات AJAX. لكنه يبقى في نفس الحالة ويعيد نظام الأفضليات المعمم كرد فعل لتلك الحالة بينما أتوقع نظام الأفضليات المعمم للدولة التالية.

فيما يلي رمز Webflow:

def gettingStartedAjaxFlow = {      
        flow1 {
            on("next") {                
                println "flow1"
            }.to("flow2")
            on("skip").to("flow2")
        }

        flow2 {
            on("next") {
                println "flow2"
            }.to("flow3")
            on("skip").to("flow3")
        }

        flow3 {         
            on("next"){             
                println "flow3"
            }.to("finish")
            on("skip").to("finish")

            finish {
                redirect(action:"index")
            }
        }
}

فيما يلي دعوة Ajax التي أقوم بها لانتقال الحالة:

$.ajax({
            type: "POST",
            url: "/UN/user/gettingStartedAjax",
            success: function(data) {
                $("#wizardDiv").html(data);
            }
});

يحتوي GSPs لكل ولاية (Flow1 ، Flow2 ، Flow3) على جزء رمز AA له وجود أزرار عن بعد وطلباته المطلوب وتخطي الأزرار للانتقال إلى الحالة التالية ، ونتيجة لذلك ، قم بتحديث "WizardDiv" Div. فيما يلي شظية GSP لحالة Flow1:

<g:formRemote name="flow1Form" url="[controller:'user', action:'gettingStartedAjax']" update="wizardDiv">
    <p>You are in flow 1</p>
    <g:submitButton name="next" value="Next Flow" />
    <g:submitButton name="skip" value="Skip Flow" />    
</g:formRemote>
هل كانت مفيدة؟

المحلول

بالإضافة إلى تتبع التنفيذ (كما تم نشر Daxon) ، ستحتاج إلى التأكد من تسمية أزرارك _eventid_next و _eventid_skip. G: SubmitButton عادة ما يكون ذكيًا بما يكفي للقيام بذلك نيابة عنك ولكنه قد لا يكون داخل شكل بعيد.

أيضًا ، يستخدم رمز تدفق الويب الخاص بي تنفيذ المعلمة ، وليس FlowExecutionKey - أي إصدار من الكأس تستخدمه؟

نصائح أخرى

أنا عالق في نفس المشكلة ، اكتشفها تقريبًا ،

ما تحتاج إلى القيام به ، هو إعادة إرسال Grails Webflow "_flowexecutionkey" التي تتتبع الحالة الحالية ،

أنا متأكد من أنك رأيت هذه, ، كما هي النتيجة الوحيدة التي تجدها Google.

أرسل طلب Ajax إلى إجراء ، والذي يملأ قالبًا ويرسله مع علامة إدخال ،

 <input id="flowExecutionKey" name="_flowExecutionKey" value="${request.flowExecutionKey}" size="100"/>

ولكن يمكنك محاولة إرسال معبد مرة أخرى مثل JSON مع "_flowexecutionkey" جنبا إلى جنب مع البيانات التي تريد إرسالها مرة أخرى ،

هذا هو سنتي

هنا حل يعمل في Grails 2.5.3 على الأقل لعمل واحد. يتم تعديل معرف واسم الزر تلقائيًا لتضمين "لتضمين"EventId"كبادئة ، لكن هذا لا يزال لم ينجح بالنسبة لي ما لم أضف _EVENT_ID يدويًا كمعلمة إدخال. ومع ذلك ، لست متأكدًا من كيفية عمل هذا لأحداث متعددة ممكنة.

<g:formRemote name="flow1Form" url="[controller:'user', action:'gettingStartedAjax']" update="wizardDiv">

<input type="hidden" id="execution" name="execution" value="${request.flowExecutionKey}"/>
<input type="hidden" id="_eventId" name="_eventId" value="next"/>

<fieldset class="form">
</fieldset>

<fieldset class="buttons">
    <g:submitButton name="next" value="Next flow"/>
</fieldset>

</g:formRemote>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top