gpt4 book ai didi

javascript - 使用 PHP 在 javascript 函数中检索 json

转载 作者:行者123 更新时间:2023-12-03 04:14:30 25 4
gpt4 key购买 nike

我想读取 json 值。我编写代码的方式如下所示。其中 x 是 $movieID。

<script>
function bookBTN(x) {
<?php $url = 'http://movie.com/movieOne?seatNum=' . x;
$jsonURL = file_get_contents($url);
$obj = json_decode($jsonURL,true);
foreach($obj as $data)
{
$res = $data['avail'];
}
if ($res == "yes"){
echo "alert ('SUCESS');";
}
else
{
echo "alert ('FAIL');";

}


?>

}
</script>

但是,当我尝试单击该按钮时,它没有弹出警报框。如果我删除了函数内的 json 检索器,则警报框将起作用。为什么会这样?我该如何解决这个问题?

数据:

{"avail":"yes"}

最佳答案

假设 PHP 可以工作(尽管这取决于它如何将 x 视为文字,但可能不会),那么页面上的输出将是 <script>function bookBTN(x) { alert('SUCESS')';}</script><script>function bookBTN(x) { alert('FAIL')';}</script> 。我怀疑这就是你的意图。不能互换x像这样的脚本之间。

PHP 在服务器上运行,JavaScript 在浏览器上运行,处于完全独立的上下文中。 PHP 运行以创建页面内容,其中可能包括一些 HTML、CSS、JS 等。PHP 脚本的输出是一个页面,然后将其发送到客户端计算机上的浏览器,以进行显示和交互。这意味着您可以使用 PHP生成一些静态 JS,然后在页面加载时运行

如果您希望在页面加载后在 JS 和 PHP 之间进行一些交互,则需要使用 AJAX 调用以双方都能理解的方式在客户端和服务器之间发送数据。

但是,对于这个特定的简单示例,您可能根本不需要任何 PHP,因为假设此删除服务器支持 CORS,您可以简单地使用 AJAX 从 JavaScript 直接调用它。请注意,您的 PHP 代码在 foreach 中也存在逻辑错误,因为它只会匹配最后一个“data”值以查看它是否包含“yes”,因为该测试位于循环之外。

此示例使用 jQuery 语法来执行 ajax GET 请求并循环访问数据,但也可以使用普通 JS 来完成这两项操作。

编辑:现在很明显远程服务器不接受 CORS 请求。因此我们需要使用您的 PHP 服务器作为中介。因此,您的解决方案需要分为两部分。此外,该函数返回的数据结构并不是您的 PHP 代码片段最初建议的:

1) 您现有的网页,具有相同的代码,但 ajax 调用更改为指向您自己的 PHP 服务器:

<script>
function bookBTN(x) {
alert("x = " + x); //you can use this for testing, and remove later
$.getJSON('http://yourservername/movieOne.php?seatNum=' + x, function(data) {
if (data.avail == "yes") {
alert("Success"); //note correct spelling of "success"
}
else { alert("Failure"); } //only if we didn't find anything
});
}
</script>

2) 服务器上的 PHP 脚本充当中介。为了举例,我将其命名为 movieOne.php,以反射(reflect)它调用远程服务器上的 movieOne URL。

<?php
$seatNum = $_GET["seatNum"]; //retrieve the seat number from the browser ajax request
$url = 'http://movie.com/movieOne?seatNum=' . $seatNum;
$result = file_get_contents($url); //make the request to the remote server
echo $result; //echo the result directly back to the ajax call without processing it. If this doesn't return JSON already, then try using "json_encode($result);" instead
?>

关于javascript - 使用 PHP 在 javascript 函数中检索 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44199867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com