我有一个功能
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);
}
});
答案 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();
}
}
?>