如何将Javascript函数的结果转换为仅包含JSON字符串的页面?

时间:2015-04-03 16:56:27

标签: javascript php jquery json

我需要加载一个网址,并且此页面上的唯一文字是JSON字符串。

作为一个例子,我构建了一个简单的函数来获取星期几:getDayOfWeek()。我的实际功能要复杂得多,而且不能轻易转换成另一种语言。

但我不能简单地将其加载到DOM中。我需要页面上的 only 文本作为JSON对象。

例如:

http://example.com/what_day_is_it // needs to return: { "day": "Friday" }

这是一个小提琴:http://jsfiddle.net/7b49Lorw/

HTML:

<span id="day"></span>

JS:

function getDayOfWeek() {
  var d = new Date();
  d.getDay();
  var gsDayNames = new Array(
    'Sunday',
    'Monday',
    'Tuesday',
    'Wednesday',
    'Thursday',
    'Friday',
    'Saturday'
  );
  return gsDayNames[d.getDay()];
}
$('#day').text(getDayOfWeek());

假设我在服务器端使用PHP,我如何使用PHP来评估JS函数的结果并返回JSON字符串?

3 个答案:

答案 0 :(得分:0)

由于您在问题中包含了PHP标记(即使您没有提及):

<?php 
echo json_encode(array('day' => date('l')));

<强> 编辑: 因为我们只能猜测你实际上想要做什么,并且因为你觉得将1000多行JS功能翻译成其他语言的难度并不值得,为什么不要你呢?只需使用以下内容包装函数的输出:

JSON.stringify({ "day": <YourFunctionThatReturnsTheDay> });

并在DOM准备好后显示它?这将假设调用您的页面的任何客户端都能够解析并运行Javascript。

答案 1 :(得分:0)

在php中,您可以根据一些参数生成代码。例如,您可以在GET请求中添加参数,例如: http://example.com/what_day_is_it?onlyJSON=true

然后在您的代码中,将可视部分包装在

<!-- Your JSON print goes here -->
<?php if ($_GET['onlyJSON']){ ?>
<span id="day-of-week">

</span>

<!-- Your HTML code without parameter goes here-->
<?php } else {  ?>

<span> MY BIG PAGE </span>

<? } ?>

你的javascript就是:

function getDayOfWeek() {
    var d = new Date();
    d.getDay();
    var gsDayNames = new Array(
      'Sunday',
      'Monday',
      'Tuesday',
      'Wednesday',
      'Thursday',
      'Friday',
      'Saturday'
    );
    return gsDayNames[d.getDay()];
}
$('#day').text(getDayOfWeek());
$('#day-of-week').html(JSON.stringify({day: getDayOfWeek()}));

这将使页面仅显示您的JSON。从文本的角度来看,就是这样。但是,页面本身(它的源代码)不会只包含那个json。它将具有处理它的HTML代码+ Javascript。要在JS中使用函数,您需要将它作为Page的一部分。

答案 2 :(得分:0)

您可以安装v8js(PHP扩展,允许在PHP中解释Javascript代码)。本指南介绍了v8js的安装和入门:

http://css.dzone.com/articles/running-javascript-inside-php