在一个文件(test_ajax.php)中,我有一个在更改中通过jQuery Ajax()加载另一个页面(registration_form_race_type.php)和一条短消息。当通过其绝对URL访问“test_ajax.php”时,它可以正常工作:
http://46.20.119.207/~asuntosf/wordpress_test/wp-content/themes/test_ajax/test_ajax.php
但令人惊讶的是,如果通过其WordPress地址访问完全相同的页面“test_ajax.php”,则Ajax功能将停止工作:
http://46.20.119.207/~asuntosf/wordpress_test/?page_id=13
我坚持认为这两个网址都指向SAME两个PHP文件。
以下是“test_ajax.php”的代码:
<?php
/*
Template Name: Page Test Ajax 01
*/
?>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
<script type="text/javascript">
jQuery(function () {
jQuery('#event_id_from_list').change(function() {
var event = jQuery("#event_id_from_list").val();
var data = "event_id=" + event;
jQuery.ajax({
url: 'registration_form_race_type.php',
type: 'GET',
data: data,
success: function(data){
jQuery('#div_race_type').html(data);
}
});
});
});
</script>
</head>
<body>
<select class='required' type="text" name="event_id_from_list" id="event_id_from_list" />
<option value='Paris'>Paris</option>
<option value='London'>London</option>
<option value='Rome'>Rome</option>
</select>
<div id='div_race_type' class='section'>
<?php require_once('registration_form_race_type.php'); ?>
</div>
</body>
<html>
通过Ajax调用的页面代码,“registration_form_race_type.php”:
<?php if (isset($_GET['event_id'])) echo 'you selected '.$_GET['event_id']; ?>
答案 0 :(得分:1)
这种行为并不奇怪。你只是在你的jQuery中引用registration_form_race_type.php
,它只是你要求它做的,就是在当前目录中查找registration_form_race_type.php
。 registration_form_race_type.php
位于http://46.20.119.207/~asuntosf/wordpress_test/wp-content/themes/test_ajax/
内,而不在http://46.20.119.207/~asuntosf/wordpress_test/
。
如果您想从registration_form_race_type.php
访问http://46.20.119.207/~asuntosf/wordpress_test/?page_id=13
,您的代码需要更改为:
jQuery.ajax({
url : 'wp-content/themes/test_ajax/registration_form_race_type.php',
type : 'GET',
data : data,
success : function (data) {
jQuery('#div_race_type').html(data);
}
});