由于ajax代码导致404错误?

时间:2014-11-27 08:26:56

标签: javascript php html ajax http-status-code-404

我有一个包含action=""和许多AJAX代码的表单,用于验证或链式选择表单元素,如下所示。

**我当前的代码(简体)**

<?php
if( isset( $_POST['create_transaction'] ) ) {
 // do something
}
?>

<div>
  <!-- period information will be filled up by ajax -->
  <input type="text" name="period" class="form-control" id="period" readonly />
</div>

<form id="form" method="post" action="">
  <input name="r_date" type="date" value="<?php echo isset( $_POST['r_date'] ) ? $_POST['r_date'] : date( "Y-m-d" ); ?>" class="transaction_date" />
  <input type="submit" name="create_transaction" value="Create" />
</form>

<script>
jQuery(document).ready(function($) {

  // Do this and that...


  /*  Get period information if date is already filled up on page load */
  var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
  var $transaction_date = $(".transaction_date").val();

  if( $transaction_date ) {
    // call ajax for period <-- THIS IS THE PROBLEM CHILD.
    jQuery.ajax({
        url: ajaxurl,
        data: 'action=get_period_by_date&transaction_date='+$transaction_date,
        type: 'GET',
        success:function(results) {
            jQuery("#period").val(results);
        }
    }); 
  }

});
</script>

这里我使用输入日期检索句点名称。例如,如果日期为 2014-01-01 ,那么#period div将填充 PERIOD-01 。如果日期 2014-08-25 ,那么#period div将填充 PERIOD-08 。此日期字段将自动填充页面加载的今天日期。

问题在于,如果我使用日期输入插入AJAX代码来检索期间信息,提交表单(点击&#39;创建&#39;按钮)会导致404错误。如果我删除代码,表单效果很好。

get_period_by_date函数似乎没有问题,因为它正确检索并显示了句点名称。

问题的原因是什么?

1 个答案:

答案 0 :(得分:1)

404错误意味着您的AJAX请求会导致未出现的路径。这是你应该解决的第一个问题:)。

使用您的控制台调试此控制台:

 var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';

您在jQuery方法中使用此var。我认为它将从字面上解释。我不认为可以在这里使用php语法。

我不确定这是不是一个好习惯,但是为了快速修复,你可以在你的html页面中使用该标记创建一个隐藏字段。然后你可以使用jQuery或javascript

轻松地从中获取价值