为什么JSON不接受我的PHP变量?

时间:2014-04-22 03:52:07

标签: javascript php jquery ajax json

我无法通过jQuery.ajax调用我的PHP字符串变量$defaultTicker。我尝试过编码到utf8并修剪任何类型的"特殊"人物,但没有任何帮助。如果我查看页面源代码,我会看到一个有效的JSON数组:{ "ticker":"SPY", "startDay":1, "endDay":30}

这是我提交数据的jQuery:

 $.ajax({
     url: "findCorrelated.php",
     // WHY DOESN'T <?=$defaultTicker?> work???
     data: {
         "ticker": "<?=$defaultTicker?>",
         "startDay": 1,
         "endDay": 30
     },
     success: function (data) {
         $('#testParagraph').show();
         $('#testParagraph').html(data);
     }
 });

有关为何无法使用PHP变量提交的任何想法?如果我硬编码SPY代替<?defaultTicker?>,它就会成功。但是,在查看源时,结果看起来是相同的。

注意:我没有在PHP数组上使用json_encode,因为startDayendDay值将来自客户端JavaScript。

编辑:真正的问题实际上是Chrome中的浏览器设置。它缓存了我的javascript并忽略了对文件的任何更新,因此我不断进行更改并获得相同的结果。

2 个答案:

答案 0 :(得分:2)

可能是因为您的服务器未启用short_open_tag配置。

因此,以下行不会被解析为PHP代码,而是被视为纯文本。

"ticker": "<?=$defaultTicker?>",

请改用:

"ticker": "<?php echo $defaultTicker; ?>"

短代码在编码领域被视为PITA,因为如果您必须将代码迁移到不支持它的服务器,或者您无法启用它,那么您必须编辑当你可以使用普通标签时,所有代码都只针对那个环境。 但是,从5.4.x开始,短手标记由默认启用,并在任何PHP文档中解析。但要记住不同的环境是件好事。

答案 1 :(得分:0)

尝试使用:

data: { "ticker":"<?php echo $defaultTicker; ?>", "startDay":1, "endDay":30},

而不是:

data: { "ticker":"<?=$defaultTicker?>", "startDay":1, "endDay":30},