【问题标题】:How to pass data from javascript to php? [duplicate]如何将数据从javascript传递到php? [复制]
【发布时间】:2021-05-18 10:15:39
【问题描述】:

这是我的代码,我存储在本地存储中,我希望它传递给一个 php 文件,这似乎是成功的,因为警报“alert("Do something with example.php response");"弹出窗口。但是当它指向下一页时出现错误:注意:未定义的索引:第 183 行 C:\xampp\htdocs\final-project\placenameclick.php 中的数据

$(".passdata").click(function () {
var currentplaceind = parseInt($(this).data("indes"));
localStorage.setItem("p", currentplaceind);

var data1 = localStorage.getItem("p");

jQuery.post("placenameclick.php", {datas: data1}, function() 
{ 
    alert("Do something with example.php response"); 
    window.location = 'placenameclick.php';
})
.fail(function() 
{ 
    alert("Damn, something broke"); 
}); 

}

这是我在 placenameclick.php 上的代码

<?php

$data = $_POST['datas'];
$results = $pdo->query("SELECT * FROM places WHERE place_id = $data");
while ($row = $results->fetch()) {
    include("places.php");
}
?>

【问题讨论】:

  • 这是因为 placenamelick.php 在尝试从 $_POST 读取之前没有检查请求是否为 POST - 并且 window.location = 'placenameclick.php'; 导致发送 GET 请求,根本没有任何参数.但是,如果您使用 AJAX 向 placeameclick.php 发送请求,那么之后应该不需要再重定向。 AJAX 的全部目的是使您能够停留在同一个主页上,而无需任何回发、重定向等。同样,如果您想重定向,请不要使用 AJAX。也许您还没有真正了解您的内容正在努力实现。
  • 你的代码也对SQL Injection开放
  • 没关系,只是这个sem的一个项目。
  • 这不是借口。 a) 你不应该相信人们不会犯错误或被证明是恶意的,并且 b) 你不应该相信他们的机器,或者你网络上任何其他人的机器,或者像服务器这样的无人机器,不要相信被可能攻击您的应用程序的东西污染。此外,参数大大降低了语法错误和注入攻击的风险。而且它们并不难使用。因此,如果您了解它们,绝对没有理由不使用它们。第一次做对,每次做对。养成良好的习惯。
  • 无论如何你需要回答你想要达到的目标。尚不清楚为什么在对它进行 AJAX 之后重定向到 placenameclick.php。也许您真的想从 AJAX 调用中获取输出并将其附加到当前页面?

标签: javascript php jquery local-storage


【解决方案1】:

您正在向 placenameclick.php 发出两个请求。

第一个是使用 Ajax 的 POST 请求,并定义了值。

第二个是带浏览器导航的GET请求,值不是。


Ajax 的重点是无需导航来交换数据。既然要导航,Ajax 是错误的工具。

删除 JavaScript。将其替换为常规 HTML 表单。

【讨论】:

  • 本地存储的值来自数据库循环,我使用 data-* 属性将 place_Id 存储在按钮上,并使用 javascript 获取它。还有其他方法吗?
猜你喜欢
  • 2020-03-05
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多