PHP:如何存储js调用的返回值

时间:2013-09-16 06:48:17

标签: javascript php

我有一个功能

function getCalendarData(){
   ob_start();
   echo "<script type='text/javascript' src='http://splocal/courses/calendar.js'></script>";
   $calendarAry = ob_get_contents();
   print_r($calendarAry);
   return $calendarAry;
 }

这里我试图将js调用的返回值赋给变量。但它不起作用。

这样做的正确方法是什么?

calender.js file 


    function returnCalenderArray(data){
        console.log(data);
        document.write(data);
        return data;

    }


    $.ajax({
         type: "GET",
         url: "http://localhost:8080/privateTraining/getTrainingsJson",
         data: { ListID: '1'},
         dataType: "jsonp",

         success: function(data) {
         alert('Hi'+data);
         returnCalenderArray(data);
      }
});  

2 个答案:

答案 0 :(得分:0)

从技术上讲,你不能从JavaScript调用PHP,至少不能在同一页面上调用PHP。 PHP是服务器端唯一的语言,JS是客户端。从JS函数调用PHP脚本的唯一方法是在后台打开一个新页面(不显示给浏览器)并以这种方式执行。它被称为 AJAX ,我建议你对这项技术采取一些措施。

对于使用AJAX的非常简单的方法,请使用JS框架,例如 jQuery

答案 1 :(得分:-1)

您可以尝试使用PHP构建javascript。这将允许您加载可执行内容而不是静态。要做到这一点,首先你需要一个javascript函数来将php加载到一个脚本元素中。类似的东西: -

function loadscript(src){
       var myscript = document.createElement('script');
       myscript.src = src;
       document.getElementByTagName('head')[0].appendChild(src);
}

然后你可以将PHP变量写入构造的JS代码,然后通过在浏览器中调用该函数来加载php。 PHP会像这样。

在服务器myphpcode.php

<?php
$sessionid = $_SESSION['user_id'];
?>
mydiv.innerHTML = 'User ID ' + <?php echo $sessionid; ?>;   

js在HTML页面中调用

loadscript('myphpcode.php');

使用相同的方法通过在javascript中构造一个有效的查询字符串来通过PHP将数据发送回服务器,以便应用于loadscript调用。

var a = 'some data';
var b = 'some more data';
var urlstring  = 'myphpcode.php?a=' + a + '&b=' + b;
loadscript(urlstring);

然后您可以将javascript变量存储在数据库中,例如通过在myphpcode.php中编写函数。

<?php
include mydbconnection.php  // some database connection code
if ((isset $_GET["a"]) && (isset $_GET["b"])) { //check the url query string has data 
   $a = $_GET["a"];
   $b = $_GET["b"];
   $query = "INSERT into mydatabase.mytable (columnA, columnB)
             VALUES ('" . $a . "','" . $b . "');";
   if ($mysqli->prepare($query)){
       $mysqli->execute();
   }
}
?>