【发布时间】:2015-01-25 18:46:29
【问题描述】:
我有一个带有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 代码以使用日期输入检索期间信息,提交表单(单击“创建”按钮)会导致 404 错误。如果我删除代码,表单就可以正常工作。
get_period_by_date 函数似乎没有问题,因为它正确检索并显示了期间名称。
我的问题的原因是什么?
【问题讨论】:
-
解决 404 错误后,您必须使用
.text()或.html(),而不是.val(),填写DIV。 -
我认为如果不将它放在任何事件中,那么使用 ajax 是没有意义的。您可以在
input #period中直接从 PHP 获取该数据。 -
是的,我检查了 ajaxurl 并且它有正确的 url,并且 ajax 正在按设计运行......
-
对不起,我不明白。我需要做的是在用户选择日期时(而不是提交日期时)显示期间名称。如何在不使用 ajax 的情况下实现这一目标?
-
如果您想在用户选择日期时这样做,而不是需要将其放在该选择元素的
change event中,那么 ajax 就很有用。
标签: javascript php html ajax http-status-code-404