我有一个包含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
函数似乎没有问题,因为它正确检索并显示了句点名称。
问题的原因是什么?
答案 0 :(得分:1)
404错误意味着您的AJAX请求会导致未出现的路径。这是你应该解决的第一个问题:)。
使用您的控制台调试此控制台:
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
您在jQuery方法中使用此var。我认为它将从字面上解释。我不认为可以在这里使用php语法。
我不确定这是不是一个好习惯,但是为了快速修复,你可以在你的html页面中使用该标记创建一个隐藏字段。然后你可以使用jQuery或javascript
轻松地从中获取价值