ডিফল্ট রোধ প্রতিরোধ সঙ্গে ফর্ম জমা দিতে অক্ষম

ফর্মটি প্রকৃত জমা দেওয়ার আগে আমার কাছে কোডটি কার্যকর করতে হবে। আমার Ajax কল আছে, এর পরে ফলাফলের উপর ভিত্তি করে, ফর্ম জমা দিতে হবে, যা কাজ করছে না।

    <form id="myform" method="post" action="<?=$_SERVER['PHP_SELF']?>">
    <input type="text" name="username" id="username" value="test" />
    <input type="submit" name="submit" id="submit" value="Save" />
    </form>

    <script>
    $(document).on("submit", '#myform', function(event)
{
    event.preventDefault();
    var form    = $(this);
    $.ajax({
        url: "url",
        type: 'POST',
        success: function (response) 
        {
            if(response    ==  1)
            {
                form.submit();
            }
            else
            {
                return false;
            }
        }
    });
});
    </script>
0
'url' এর মান কী? আপনি প্রতিক্রিয়া মান চেক করেছেন? এটা 1 কিনা?
যোগ লেখক Dipanwita Kundu, উৎস
কেউ কি ভিতরে প্রবেশ করলেই আপনি ফর্ম জমা দিতে চান? $ ('# myForm')। ('জমা দিন ... আরো উপযুক্ত বলে মনে হবে
যোগ লেখক Rory McCrossan, উৎস
আপনি AJAX কল পরে ফর্ম জমা কেন। অজ্যাক কল কি পয়েন্ট ?? এছাড়াও আপনি আপনার AJAX মাধ্যমে কোন তথ্য পাস করবেন না
যোগ লেখক Akintunde Olawale, উৎস
নির্দিষ্ট হতে হবে .. "কাজ না" .. wht আপনার ত্রুটি?
যোগ লেখক Vimal, উৎস
এটির event.preventDefault (); ফর্মটি রিফ্রেশ/পৃষ্ঠা লোড না করে আপনি জমা দিতে পারবেন কনসোলে বা নেটওয়ার্ক ট্যাবে @Steffi
যোগ লেখক Masivuye Cokile, উৎস
$ ('# myform') পরিবর্তন করুন। ('ক্লিক করুন', ফাংশন (ইভেন্ট) থেকে $ ('# submit')। ('ক্লিক করুন', ফাংশন (ইভেন্ট) </কোড> তারপর এটি প্রথম লাইন `e.preventDefault ();` এ হওয়া উচিত
যোগ লেখক Masivuye Cokile, উৎস
এই সব এ যদি ইন্দ্রিয় হয় না (প্রতিক্রিয়া == 1) {form.submit (); } অন্য {e.preventDefault (); মিথ্যা ফিরে; }
যোগ লেখক Masivuye Cokile, উৎস
@Setffi নীচের উত্তর চেক করুন তাদের একজন কাজ করা উচিত
যোগ লেখক Masivuye Cokile, উৎস
ফর্ম জমা পাশাপাশি অন্য অবস্থায় ঘটছে। @Vimal
যোগ লেখক Steffi, উৎস
@ ম্যাসিভুকেকোকাইল আমি যদি অ্যাজ্যাক্স এর আগে e.preventDefault() প্রদান করি, তবে ফর্ম জমা দেওয়া হয় না (যদি শর্তটি কাজ করে না)
যোগ লেখক Steffi, উৎস
প্রতিক্রিয়া মূল্য 1 এবং একটি বস্তু হওয়া উচিত নয়
যোগ লেখক Chinito, উৎস
কি প্রতিক্রিয়া?
যোগ লেখক Chinito, উৎস

8 উত্তর

সম্ভবত আপনি এই কোডটি চালাতে চান যেখানে e.preventDefault() প্রথম বলা হয়

<form id="myform" method="post" action="<?=$_SERVER['PHP_SELF']?>">
<input type="text" name="username" id="username" value="test" />
<input type="submit" name="submit" id="submit" value="Save" />
</form>

<script>
$('#myform').on('click', function (event) 
{
e.preventDefault();
var form    = $(this);
$.ajax({
    url: 'url',
    type: 'POST',
    success: function (response) 
    {
        if(response   ==  1)
        {
            form.submit();
        }
        else
        {
            return false;
        }
    }
});
});
 </script>
1
যোগ
এটা ভুল যদি আমি দুঃখিত
যোগ লেখক Sugi Almantara, উৎস
আপনি ফর্ম আইডি ক্লিক করতে পারবেন না। বাটন আইডি পরিবর্তন করুন। এছাড়াও আমার downvote না
যোগ লেখক Akintunde Olawale, উৎস
এটি একটি ত্রুটি উত্পন্ন করে
যোগ লেখক Masivuye Cokile, উৎস

আপনি কোড এই মত হওয়া উচিত:

<script>
$('#submit').on('click', function (event) 
{
    event.preventDefault();
    var form    = $("#myform");
    $.ajax({
        url: 'url',
        type: 'POST',
        success: function (response) 
        {
            if(response   ==  1)
            {
                form.submit();
            }                
        }
    });
    return false;
});
</script>

অথবা আপনি ব্যবহার করতে পারেন

$ ("#myform")। জমা দিন (ফাংশন (ইভেন্ট) {

1
যোগ
ফিরতি এবং preventDefault() সাফল্য এ হ্যান্ডলারটি এমন কিছু করতে যাচ্ছেন না যা এটি সমান্তরাল
যোগ লেখক Rory McCrossan, উৎস
আমি আমার উত্তর সম্পাদনা করেছি
যোগ লেখক Ahmed Ginani, উৎস

আমি সত্যিই এই সঙ্গে অর্জন করতে চান কি নিশ্চিত না

if(response   ==  1)
            {
                form.submit();
            }
            else
            {
                e.preventDefault();
                return false;
            }

এটি মোটেও জ্ঞান করে না এবং আপনি যা চান তা বোঝার জন্য এটি কঠিন, যেমন আপনি উপরে মন্তব্যগুলিতে প্রতিক্রিয়া করেন না।

যাচাই করার জন্য যদি আপনার কোনও বৈধতা থাকে তবে আমি নিশ্চিত নই, যদি আপনি এটি যাচাই করতে jQuery বৈধকরণ প্লাগইন ব্যবহার করতে পারেন সামনে শেষ তারপর সার্ভারে সার্ভার পাশ দিয়ে বৈধ।

প্লাস আপনি সার্ভার পাশে কোন তথ্য পাঠানো হয় না।

আপনার স্ক্রিপ্টটি কেমন হওয়া উচিত তা হল:

<form id="myform" method="post" action="">
<input type="text" name="username" id="username" value="test" />
<input type="submit" name="submit" id="submit" value="Save" />
</form>

<script>
$('#myform').on('submit', function (event) 
{
    event.preventDefault();
    var formdata    = $('#myform').serialize();
    $.ajax({
        url: 'url',
        type: 'POST',
        data : formdata,
        dataType : 'json',
        encode : true,
        success: function (response) 
        {
            if(response   ==  "What you expected")
            {
              //DO something else
            }
            else
            {
               //Write the error back to the user in some div
            }
        }
    });
});
</script>

সম্পাদন করুন: যদি আপনি জমা দেওয়ার আগে কোনও বৈধতা চান তবে উপরে উল্লেখিত লাইব্রেরিটি ব্যবহার করতে পারেন, এইভাবে আপনি এটি করবেন

<script  src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>

<form id="myform" method="post" action="">
<input type="text" name="username" id="username" />
<input type="submit" name="submit" id="submit" value="Save" />
</form>

<script>

$('#myform').validate({

    rules :{

        username :{

            required : true,
        }
    },

    messages :{

        username : {

            required : "Enter username",
        }
    },

    submitHandler : sendData

});

function sendData(){

    var formdata    = $('#myform').serialize();
     $.ajax({
        url: 'url',
        type: 'POST',
        data : formdata,
        dataType : 'json',
        encode : true,
        success: function (response) 
        {
            if(response   ==  "What you expected")
            {
              //DO something else
            }
            else
            {
               //Write the error back to the user in some div
            }
        }
    });


    return false; //prevent form traditional submission    
}
</script>

এছাড়াও পাশাপাশি সার্ভার পাশাপাশি যাচাই করতে ভুলবেন না

আরও সম্পাদনা

আপনি অনুরোধটি পাঠাতে এবং এটি আবার পাঠাতে চান কারণ আপনি একটি অধিবেশন বিদ্যমান কিনা তা পরীক্ষা করতে চান, আপনি যদি ব্যবহারকারীর ফর্মটিও দেখানোর আগে সেটি করতে পারেন তবে সেশনটি উপস্থিত থাকলে ফর্মটি বা অন্যটি দেখান। ত্রুটি বা কিছু দেখান

এই আপনি যে কিভাবে হবে।

<script  src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>


<?php

    if(isset($_SESSION['name']) && !empty($_SESSION['name'])){?>

        <form id="myform" method="post" action="">
            <input type="text" name="username" id="username" />
            <input type="submit" name="submit" id="submit" value="Save" />
        </form>

            <script>

            $('#myform').validate({

                rules :{

                    username :{

                        required : true,
                    }
                },

                messages :{

                    username : {

                        required : "Enter username",
                    }
                },

                submitHandler : sendData

            });

            function sendData(){

                var formdata    = $('#myform').serialize();
                 $.ajax({
                    url: 'url',
                    type: 'POST',
                    data : formdata,
                    dataType : 'json',
                    encode : true,
                    success: function (response) 
                    {
                        if(response   ==  "What you expected")
                        {
                          //DO something else
                        }
                        else
                        {
                           //Write the error back to the user in some div
                        }
                    }
                });


                return false;    
            }
            </script>
<?php

    }else{

       //the session is not set then do nothing or show error/redirect
    }
?>

তারপরে আপনার সার্ভারের পাশে ব্যবহারকারীর ইনপুট গ্রহণ এবং প্রক্রিয়াকরণ করার আগে একই সেশন বিদ্যমান কিনা তা যাচাই করতে হবে।

<?php
    session_start();

    if(isset($_SESSION['name']) && !empty($_SESSION['name'])){


        //DO FORM PROCCESSING
    }else{

        echo json_encode('not set');

       //send not set back to the client and do something about that response.
    }
?>
1
যোগ
অবশেষে! একটি কার্যকর সমাধান। <�কোড> +1 টি এ
যোগ লেখক Akintunde Olawale, উৎস
নিশ্চিত, কিন্তু যখন সে আবার জমা দিবে তখন অজ্যাক কল আবারও ঘটবে। নীচের আমার উত্তর দেখুন, আপনি ফর্ম কর্ম জমা দেওয়ার আগে জমা হ্যান্ডলার নিবন্ধন করতে হবে।
যোগ লেখক Wizard, উৎস
কিন্তু তিনি ফর্ম এর কর্ম আবার জমা দিতে চায়। এই জমা দিতে হ্যান্ডলার (আয্যাক্স কল ইত্যাদি) recursively কল যাচ্ছে না?
যোগ লেখক Wizard, উৎস
@Steffi আপনি যদি ফর্মটি দেখানোর আগেও এই পৃষ্ঠাটিতে এটি করতে পারেন, যদি অধিবেশনটি উপস্থিত না থাকে তবে ফর্মটি সহজে দেখাবে না
যোগ লেখক Masivuye Cokile, উৎস
আপনি একটি একক কল যে সব করতে পারেন, আপনি অভ্যন্তরীণভাবে প্রথম চেক করতে চান কি?
যোগ লেখক Masivuye Cokile, উৎস
@ উইজার্ড আমি মনে করি তিনি বৈধতা করেন তবে যাচাইকরণের নিয়ম পূরণ করার পরে আবার জমা দিন ... কিন্তু একক কলটিতে এটি করা যেতে পারে
যোগ লেখক Masivuye Cokile, উৎস
ধন্যবাদ বন্ধু @ একিন
যোগ লেখক Masivuye Cokile, উৎস
@ স্টেফফি আমি আপনার প্রয়োজনীয়তা পূরণ করার জন্য আমার উত্তর আপডেট করেছি চেক করুন
যোগ লেখক Masivuye Cokile, উৎস
@ মাসভিউকেকোকাইল আমার ফর্ম খুব লম্বা। সেশন থাকলেও আমি যদি লোড করি তবে ফর্মটি জমা দেওয়ার আগে আমাকে আবার চেক করতে হবে।
যোগ লেখক Steffi, উৎস
$ (নথি) .on ("জমা দিন", '#myform', ফাংশন (ইভেন্ট) {event.preventDefault (); var ফর্ম = $ (এই); $ .ajax ({url: "url", type: 'POST ', সাফল্য: ফাংশন (প্রতিক্রিয়া) {যদি (প্রতিক্রিয়া == 1) {form.submit ();} অন্য {ফিরতি মিথ্যা;}}});}); </স্ক্রিপ্ট>
যোগ লেখক Steffi, উৎস
@ মাসভিউকেকোকাইল আমার আগের মন্তব্যের কোডের সমাধান খুঁজে পেতে আমাকে সাহায্য করুন। এই কোড দিয়ে, form.submit (); কাজ করছে না. অন্য শর্ত জরিমানা কাজ করে
যোগ লেখক Steffi, উৎস
@MasivuyeCokile এটি একটি পিএইচপি অধিবেশন মূল্য বিদ্যমান কিনা তা পরীক্ষা করে
যোগ লেখক Steffi, উৎস
@ মাসভিউকেকোকাইল আমার প্রয়োজন আমি ফর্মের তথ্য জমা দিতে চাই, কিন্তু জমা দেওয়ার আগে আমি এমন একটি অজ্যাক সঞ্চালন করতে চাই যা অভ্যন্তরীণভাবে কিছু পরীক্ষা করে দেখায়, আমার ফর্মের তথ্য প্রয়োজন না। যদি প্রতিক্রিয়া == 1, তাহলে আমি ফর্ম জমা দিতে চাই। অন্য ফর্ম জমা না হওয়া উচিত
যোগ লেখক Steffi, উৎস

অ্যাজ্যাক্স সফলভাবে ফেরত পাওয়ার পরে, অনিয়ন্ত্রক পুনর্মিলন কল এড়াতে ইভেন্ট ম্যানুয়ালির জমা দিন এবং ম্যানুয়ালি জমা ইভেন্টটি প্রেরণ করুন (জমা আইডি এবং জমা বোতামের নাম যাতে জমা ইভেন্টটি "লুকাতে" না পারে)।

<form id="myform" method="post" action="<?=$_SERVER['PHP_SELF']?>">
<input type="text" name="username" id="username" value="test" />
<input type="submit" name="submitBtn" id="submitBtn" value="Save" />
</form>

<script>
$('#myform').on('submit', function (event) 
{
    event.preventDefault();
    var form = $(this);
    $.ajax({
        url: 'url',
        type: 'POST',
        data: form.serialize(),
        success: function(response) 
        {
            if (response ==  1)
            {
                form.off('submit');
                form.trigger('submit');
            }
        }
    });
});
 </script>
0
যোগ
<form id="myform" method="post" action="<?=$_SERVER['PHP_SELF']?>">
<input type="text" name="username" id="username" value="test" />
<input type="submit" name="submit" id="submit" value="Save" />
</form>

<script>
$('#myform').on('submit', function (event) 
{
  event.preventDefault();
   var form    = $(this);
   $.ajax({
    url: 'url',
    type: 'POST',
    success: function (response) 
    {
        if(response   ==  1)
        {
            form.submit();
        }
        else
        {
           //response will be valid and the ajax will be complete here
        }
    }
  });
});

ইভেন্ট Ajax বলা হয় আগে চালানো উচিত

0
যোগ
'জমা দিতে' ক্লিক না 'ক্লিক করুন'
যোগ লেখক Tino Costa 'El Nino', উৎস
যদি আমার Ajax কলের আগে এটি থাকে, তবে আইএফ অবস্থায় জমা দেওয়ার ফর্মটি ঘটবে না, শুধুমাত্র অন্য শর্তটি কাজ করবে।
যোগ লেখক Steffi, উৎস

আমি আমার প্রোজেক্টে যা ব্যবহার করি তা নীচের কোডটি একই রকম আছে।

<form id="myform" method="post" action="<?=$_SERVER['PHP_SELF']?>">
<input type="text" name="username" id="username" value="test" />
<input type="submit" name="submit" id="submit" value="Save" />
</form>
<script>
$('#myform').submit(function(){
    $.ajax({
        url: 'url',
        type: 'POST',
        success: function (response) 
        {
            if(response   ==  1)
            {
                $("#myform")[0].submit();
            }
        }
    });
    return false;
});
</script>
0
যোগ
এই সত্যিই জ্ঞান না। আমি মনে করি OP খুব বিভ্রান্ত। কেন আপনি একটি AJAX পরে একটি ফর্ম জমা দিতে হবে। খুবই অদ্ভুত
যোগ লেখক Akintunde Olawale, উৎস

আমি নিজেকে এই প্রশ্নের উত্তর খুঁজে পেয়েছি।

অ্যাট্রিবিউটের মান হিসাবে "জমা" দিয়ে আপনার "NAME" বৈশিষ্ট্য নেই তা নিশ্চিত করুন।

নীচে কোড স্নিপেট, যা একেবারে সূক্ষ্ম কাজ করে।

<form id="myform" method="post" action="<?=$_SERVER['PHP_SELF']?>">
    <input type="text" name="username" id="username" value="test" />
    <input type="submit" name="submitForm" id="submit" value="Save" />
</form>

<script>
$(document).on("submit", '#myform', function(event)
{
    event.preventDefault();
    var form    = $(this);
    $.ajax({
        url: "<?=PATH_SITE?>actions/qa/qaActions.php?act=checkSessionExist",
        type: 'POST',
        success: function (response) 
        {
            if(response    ==  1)
            {
                form.trigger('submit');
                return true;
            }
            else
            {
                return false;
            }
        }
    });
});
0
যোগ

আপনি যে মত করা উচিত

<script>
$('#myform').submit(function(event) {
    event.preventDefault();

    var form    = $(this);
    $.ajax({
        url: 'url',
        type: 'POST',
        success: function (response) 
        {
            if(response   ==  1)
            {
                form.submit();
            }
            else
            {

                return false;
            }
        }
    });
});
</script>
0
যোগ
না, recursive জমা দিন
যোগ লেখক Alex Slipknot, উৎস
সম্ভাব্য recursive কল
যোগ লেখক Alex Slipknot, উৎস
আপনি যে কোন উপায়ে করতে পারেন
যোগ লেখক Waqas Ahmed, উৎস
প্রতিক্রিয়া সত্য না হলে আপনি recursive AJAX কল মানে?
যোগ লেখক Waqas Ahmed, উৎস