Ajax发布带有数字的字符串,但没有用字母

时间:2016-01-06 14:56:08

标签: php jquery mysql ajax

所以我对外部php文件进行了ajax调用,该文件使用mysql查询来查找具有唯一ID的用户。如果ID是所有数字,此功能可以很好地工作,但如果ID以字母开头,那么甚至没有任何内容发布到php文件。

我已经打印到错误日志,当点击按钮并且ID以字母开头时,根本没有发生任何事情。我打印了完全数字ID和字母数字ID的数据类型,它们都是字符串,其中没有隐藏的特殊字符。

我完全迷茫和迷茫,任何人都可以提供一些有关如何发布这些值的见解吗?这是我的ajax调用代码:

var value = <?php echo $userinfo['ID']; ?>;
    $(function() {
        $( "#emailbutton" ).click(function() {
            $.post('emailaddresses.php',{value:value}, function(data){
                $("#email").html(data);
            });
        return false;
        });
    });

2 个答案:

答案 0 :(得分:0)

你只是遗漏了"<?php echo $userinfo['ID']; ?>"周围的字符串分隔符...只有数字可以作为没有引号的文字:)

var value = "<?php echo $userinfo['ID']; ?>";
$(function() {
    $( "#emailbutton" ).click(function() {
        $.post('emailaddresses.php',{value:value}, function(data){
            $("#email").html(data);
        });
    return false;
    });
});

例如,如果返回的值是123,那么您将生成以下JavaScript(有效):

var value = 123;

但是当您返回非数字ID时,它会生成无效的JavaScript,如:

var value = a123;  <=== Assigns undefined unless a variable called a123 also exists with a value

当你真的需要时:

var value = "a123";

答案 1 :(得分:0)

因为var value = a12313因javascript遇到错误而不是字符串的有效JS语法。正确的应该是var value = 'a12313'。因此,您需要将var value = <?php echo $userinfo['ID']; ?>;更改为var value = '<?php echo $userinfo['ID']; ?>';以处理字符串ID