Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ajax表单提交和第二次表单提交(如果成功)_Php_Mysql_Ajax_Forms_Expressionengine - Fatal编程技术网

Php ajax表单提交和第二次表单提交(如果成功)

Php ajax表单提交和第二次表单提交(如果成功),php,mysql,ajax,forms,expressionengine,Php,Mysql,Ajax,Forms,Expressionengine,我目前正在使用ExpressionEngine构建一个系统,允许用户回答问题以换取积分,然后他们可以使用这些积分来领取奖品 我一直在编写领取奖金的功能,它需要执行以下操作: 检查奖品是否有库存 检查用户是否有足够的分数 如果有库存且积分足够,请提交一份表格,让管理员知道如何发送奖品 我有下面的代码,我想它几乎就在那里了,但是我正在努力解决最后一点,实际的成功/失败部分。我使用了jQuery Ajax: <script type="text/javascript"> $(func

我目前正在使用ExpressionEngine构建一个系统,允许用户回答问题以换取积分,然后他们可以使用这些积分来领取奖品

我一直在编写领取奖金的功能,它需要执行以下操作:

  • 检查奖品是否有库存
  • 检查用户是否有足够的分数
  • 如果有库存且积分足够,请提交一份表格,让管理员知道如何发送奖品
我有下面的代码,我想它几乎就在那里了,但是我正在努力解决最后一点,实际的成功/失败部分。我使用了jQuery Ajax:

<script type="text/javascript">

$(function() {
    $("#prizeClaim").submit(function() {
        var data = "entry_id={entry_id}&member_id={logged_in_member_id}&prize_title={title}&prize_points={prize_points}";
        $.ajax({
            url: "/prizes/prize_validation/",
            data: data, 
            success: function(html) {
                alert(html); // alert the output from the PHP Script
            }
        });
        return false;
    });
});
</script>

$(函数(){
$(“#prizeClaim”)。提交(函数(){
var data=“entry_id={entry_id}&member_id={logged_in_member_id}&prize_title={title}&prize_points={prize_points}”;
$.ajax({
url:“/奖品/奖品验证/”,
数据:数据,
成功:函数(html){
alert(html);//警告PHP脚本的输出
}
});
返回false;
});
});
此代码当前仅在警报中输出prize_验证的html,这是迄今为止验证页面上使用的代码:

<?php

  // All data required made into vars
  $entry_id = ($_GET['entry_id']);
  $member_id = ($_GET['member_id']);
  $prize_title = ($_GET['prize_title']);
  $prize_points = ($_GET['prize_points']);

  // Select the stock column 
  $query = ee()->db->query("SELECT field_id_6 FROM exp_channel_data WHERE entry_id = $entry_id");

  if ($query->num_rows() > 0)
  {
      foreach($query->result_array() as $row)
      {
          // define stock_total
          $stock_total = $row['field_id_6'];

          // If stock more than 0 go ahead
          if($stock_total > 0) {
            //remove 1 stock item
            ee()->db->query("UPDATE exp_channel_data SET field_id_6 = field_id_6 - 1 WHERE entry_id = $entry_id");

            //update users points
            $data = array('member_id' => $member_id, 'prize_points' => $prize_points, 'prize_id' => $entry_id);
            $sql = ee()->db->insert_string('exp_rmdy_member_prize_data', $data);
            ee()->db->query($sql);
          }
      }
  }
?>

{exp:freeform:form form_id="1" return="thanks"}
    <input type="hidden" name="name" value="{username}" id="freeform_name" maxlength="150">
    <input type="hidden" name="email" value="{email}" id="freeform_email" maxlength="150">
    <input type="hidden" name="company" value="{exp:channel:entries channel='company' dynamic='no'}{if {member_code} == {company_code}}{title}: {company_address}{/if}{/exp:channel:entries}" id="freeform_company" maxlength="200">
    <input type="hidden" name="prize" value="<?php echo $prize_title ?>" id="freeform_prize" maxlength="150">
    <p><input type='submit' name='submit' value='Process order'></p>
{/exp:freeform:form}

{exp:freeform:form\u id=“1”return=“谢谢”}

Pjacks在上述评论中的回答帮助我解决了这个问题


您想使用ajax提交还是普通表单提交。如果您将
$(“#freeform”)。提交(),而不是警报。这是假设你的表单的id叫做freeform。如果您想使用ajax,它的使用方式会有所不同


为什么不在ajax调用的成功回调函数中提交freefrom呢?如果我对你的理解是正确的。听起来你已经理解我了,这听起来很理想,但我如何在成功后提交表单?你想使用ajax提交还是普通表单提交。如果您将
$(“#freeform”)。提交(),而不是警报。这是假设你的表单的id叫做freeform。如果您想使用ajax,它的使用方式会有所不同。表单是如何创建的?它已经在同一页上了吗?prizeClaim在上?这真的不重要。我得看看表格才能知道。也许在某个地方与ID或其他东西有冲突。