-1

我有一个功能

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);
      }
});  
4

2 回答 2

0

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

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

于 2013-09-16T06:55:08.993 回答
-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; ?>;   

HTML页面中的js调用

loadscript('myphpcode.php');

使用相同的方法通过 PHP 将数据发送回服务器,方法是在 javascript 中构造一个有效的查询字符串以附加到 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();
   }
}
?>
于 2013-09-16T07:12:59.860 回答