1

使用下面的代码时,我无法设置正确的位置。不知何故,在回调文件中无法识别 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);

在回调文件中,我得到正确的位置值。

4

2 回答 2

1

在您的$_POST['location']变量中,有一个字符串“ABC”。

所以如果你这样做echo($_POST['location']);,你会得到ABC,而不是some location

试试这个:

$connect->setLocation(constant($_POST['location']));

于 2013-01-10T02:05:49.617 回答
0

如果您打算将-elementa的 id 属性设置为ABC-constant,则必须这样做:

<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()-function 并通过类似于上面的代码段调用它。

于 2013-01-09T20:38:15.757 回答