【问题标题】:issue with my form submission and jquery我的表单提交和 jquery 出现问题
【发布时间】:2018-05-05 17:56:36
【问题描述】:

我在 onSubmit 表单中调用了一个 jquery 函数 如果状态为假,则不允许提交表单 但目前,它将提交页面

这是我的全部代码 php表单

echo "<form name='formulaire' id='my_form' method='POST' action='presale_pay.php' onSubmit='return veriftel();'>";
echo "<input type='text' name='promocode' placeholder='Enter Promo Code' id='promo'><div id='result'></div>";

echo "<p> <input type='submit' value='CONFIRM'></form>";

promocheck.php

<?php
include("include/control.php");


if (SessionValide ($session, $bd))
{
   $data=array();
    $promo=$_POST["promo"];

    $party=$bd->ligneSuivante($bd->execRequete("SELECT * FROM promocodes WHERE promocode='$promo' AND used_nbr<=valid_nbr"));
  if(!empty($party))
  {

   $data["status"]=true;
   $data["percentage"]=$party["percentage"];

  }
 else {
       $data["status"]=false;
  }
  echo json_encode($data);
}
?>

function veriftel(e)


    {

            $.ajax({
            type: 'post',
            url: 'promocheck.php',
            data:{promo:$("#promo").val()}, 
            dataType: 'json',
            success: function (data) {

             if(data.status==false)
             {
                $("#result").html("<font color=red>Invalid promocode</font>");
            return false;

             }
             else 
             {
                 return true;
             }
            }
          });
}

请帮我阻止表单提交

【问题讨论】:

  • @pradeep 如果您对此有任何解决方案?
  • 见上面的链接
  • 我试过了,它不起作用这就是为什么发布
  • 请发布您在按钮上设置事件的 HTML 和代码。

标签: javascript php jquery ajax


【解决方案1】:

应该像这样工作

function veriftel(e)
{
e.preventDefault(); 
$.ajax({
type: 'post',
async: false, 
url: 'promocheck.php',
data:{promo:$("#promo").val()}, 
    dataType: 'json',
    success: function (data) {
        console.log(data);
     if(data.status==false)
     {
        $("#result").html("<font color=red>Invalid promocode</font>");
        console.log("false");
      return false;

     }
     else 
     {
         console.log("true");
         return true;
     }
    }

  });

}

php 代码也应该将事件传递给函数

echo "<form name='formulaire' id='my_form' method='POST' action='presale_pay.php' onSubmit='return veriftel(event);'>";

【讨论】:

    【解决方案2】:

    问题是下面的ajax调用是异步的。您的代码不会等到您从服务器获得响应,因此该函数在 ajax 调用和响应完成之前返回。

    为避免以下问题,您必须使您的 ajax 调用同步。添加aysnc:false使其同步

        $.ajax({
        type: 'post',
        async: false, //syncronous call
        url: 'promocheck.php',
        data:{promo:$("#promo").val()}, 
        dataType: 'json',
        success: function (data) {
    
        }
    

    请注意,使调用同步会导致 javascript 执行在网页中冻结。

    【讨论】:

    • 是的,可以解决我没想到的问题
    • @sandesh 仍有问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    相关资源
    最近更新 更多