النموذج الأولي Ajax.updater لا يعمل بشكل صحيح مع التأخير

StackOverflow https://stackoverflow.com/questions/995613

  •  13-09-2019
  •  | 
  •  

سؤال

ما حصلت عليه هنا هو وظيفة js jax.updater portotater. انها تعمل تماما بهذه الطريقة:

new Ajax.Updater('feedback', 'contact.php', {
    method: 'post',
    parameters: Form.serialize($('contactForm')),
    onFailure: reportError
});

لكنني أريد أن أؤخر العملية قليلا. سألت حولها على قناة IRC النموذجية ويبدو أن هذه الطريقة للذهاب:

var feedback = function() {
    new Ajax.Updater('feedback', 'contact.php', {
        method: 'post',
        parameters: Form.serialize($('contactForm')),
        onFailure: reportError
    });

    new Effect.Highlight('feedback', {
        duration: 1
    });
}
feedback.delay(1.5);

(لا مانع التأثير السخري)

هناك وظيفة صدى في Contact.php التي تبدو وكأنها:

echo("Thanks for your message $_POST['Name']!");

بعد تطبيق تأخير الاسم لم يعد يرددا! ماذا دهاك؟

هل كانت مفيدة؟

المحلول

طيب آخر محاولة على هذا واحد. هذا يعمل بالنسبة لي ويفعل ما تريد

ملف HTML الخاص بي

<html>
    <head>
        <title>asd</title>
        <script type="text/javascript" src="src/prototype.js"></script>
        <script type="text/javascript" src="src/scriptaculous.js"></script>
        <script type="text/javascript">
            var feedback = function() {
                var params = Form.serialize($('contactForm'));
                new Ajax.Updater('feedback', 'contact.php', {
                    method: 'post',
                    parameters: params,
                    onFailure: reportError,
                    asynchronous:true
                });

                new Effect.Highlight('feedback', {
                    duration: 1
                });
            }
            function reportError(request) { alert("error");} 

        </script>
    </head>
    <body>
        <form id="contactForm">
            <p>Name:<br><input name="Name" type="text" size="30" maxlength="30"></p>
            <input name="sendbutton" type="button" value="Send" onClick="feedback.delay(1.5);">
        </form>
        <div id="feedback">foo</div>
    </body>
</html>

لي Contact.php.

<?php
echo("Thanks for your message ".$_POST['Name']."!");
?>

واستخدام ملفات JS من هنا

نصائح أخرى

لماذا لا تلتف فقط الشيء في Settimeout. يتصل. وبالتالي تأخير طلب AJAX بدلا من تأخير العرض. ما هو راجع للشغل تكرار ما يفعله وظيفة تأخير النموذج الأولي

لكن

new Ajax.Updater.delay(2, 'feedback', 'contact.php', {
    method: 'post',
    parameters: Form.serialize($('contactForm')),
    onFailure: reportError
});

يجب أن تعمل أيضا

أنا أعطيه محاولة أخرى.

يتغيرون

echo("Thanks for your message $_POST['Name']!");

ل

echo("Thanks for your message ".$_POST['Name']."!");

وحاول مرة أخرى.

وتأكد من أن قمت بتنفيذ reportError وظيفة تمر هنا

onFailure: reportError

على سبيل المثال

function reportError(request){alert('Shit happens!');}

هذا لا ينطبق على السؤال الأصلي الذي طرحه - ولكن منذ أن صادفت هذا الموضوع في بحثي. احسب كنت نشر نتائجي.

كان لدي بعض الرمز توقف Ajax التحديث فجأة عن العمل:

new Ajax.Updater('my_id, 'http://mydomain.com/my_script.php');

السبب في أنه لم يعمل بالنسبة لي لأنني كنت على www.mydomain.com (معارضة mydomain.com)

لقد غيرت ذلك ببساطة إلى:

new Ajax.Updater('my_id, 'my_script.php');

وقد عملت بشكل جيد.

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