使用下面的代码时,我无法设置正确的位置。不知何故,在回调文件中,php常量未被识别,因此其余代码无法正常运行。
来自html的片段:
<a href="#" class="selectLocation" id="ABC">
来自.js的片段
var locationID;
$(".selectLocation").click(function(){
locationID = this.id;
setLocation();
});
function setLocation() {
$.ajax({
data: {location: locationID},
success: function (data) {
// do something
};
});
};
// DEFAULT AJAX SETUP
$(function () {
$.ajaxSetup({
type: "POST",
url: "dir/callback.php",
dataType: "json",
cache: "false",
error: function (jqXHR, exception) {
if (jqXHR.status === 0) {
console.log('No connecting.\n Verify Network.');
} else if (jqXHR.status == 400) {
console.log('Bad Request. [400]');
} else if (jqXHR.status == 404) {
console.log('Requested page not found. [404]');
} else if (jqXHR.status == 500) {
console.log('Internal Server Error [500].');
} else if (exception === 'parsererror') {
console.log(jqXHR.responseText);
console.log('Requested JSON parse failed.');
} else if (exception === 'timeout') {
console.log('Time out error.');
} else if (exception === 'abort') {
console.log('Ajax request aborted.');
} else {
console.log('Uncaught Error: ' + jqXHR.responseText);
};
}
});
来自callback.php的片段:
<?php
header("content-type:application/json");
session_start();
require_once ('config.php');
...
$connect->setLocation($_POST['location']);
$ _POST ['location'];将ABC发送到我的其余代码而不是下面定义的正确值。
来自config.php的片段:
define('ABC', 'some location');
如果我这样做:
echo (ABC);
在回调文件中,我将获取正确的位置值。
答案 0 :(得分:1)
在$_POST['location']
变量中,有一个字符串'ABC'。
因此,如果您执行echo($_POST['location']);
,则会获得ABC
,而非some location
。
试试这个:
$connect->setLocation(constant($_POST['location']));
答案 1 :(得分:0)
如果您打算将a
- 元素的id属性设置为ABC
- 常量,则必须这样做:
<a href="#" class="selectLocation" id="<?php echo ABC; ?>">
PHP常量仅在PHP代码中解析,而不是在HTML中解析。
除此之外,在DOM元素的ID中编码数据对我来说似乎有点费解。如果我必须在HTML元素中编码内容,我更喜欢使用隐藏的span
- 标记或hidden
元素,如果我在form
内。您还可以尝试将以下内容添加到生成HTML文件的PHP脚本中:
<script type="text/javascript">
locationID = <?php echo ABC; ?>;
</script>
假设locationID
在全球范围内。或者,您可以在JS文件中提供某种init()
- 函数,并通过类似于上面的代码段调用它。