php - 使用ajax发送双引号时出错
问题描述
我想让用户输入一个 URL。我想使用 Ajax 将该 URL 发送到我网站上的另一个页面。在另一个页面上,它将 url 存储在一个变量中,并对 url 做一些事情。问题:如果用户没有输入 URL 而是一些双引号,我会收到错误消息。
主页上的代码:
var url = document.getElementById("url").value;
$.ajax({
type: "POST",
url: "api/checkURL",
processData: false,
contentType: "application/json",
data: '{"URL": "'+url+'"}',
success: function(r) {
//do something here
}
})
其他页面上的代码(我将 Ajax 请求发送到的页面)
if($_GET['url'] == "checkURL") {
$data = file_get_contents("php://input");
$data = json_decode($data);
$url = $data->URL;
//do something with the url
}
如果有人输入双引号,我得到的错误
<b>Notice</b>: Trying to get property 'URL' of non-object in <b>C:\xampp\htdocs\website\api\index.php</b> on line <b>15</b><br />
(第 15 行是行$url = $data->URL;
:)
如果用户输入https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
,它可以工作并且没有错误。但是,如果用户输入"
,则会出现错误。
有谁知道我该如何解决这个问题?
解决方案
用于JSON.stringify
创建 JSON,不要手动创建。它将正确地转义引号。
$.ajax({
type: "POST",
url: "api/checkURL",
processData: false,
contentType: "application/json",
data: JSON.stringify({URL: url}),
success: function(r) {
//do something here
}
})
推荐阅读
- php - 如何修复使用 PHP 计算纯文本中的单词的错误?
- reporting-services - 用于着色表行的嵌套 SWITCH 语句取决于字段值
- google-apps-script - Google Classroom API 创建材料
- java - Firebase Auth 适用于 WiFi 但不适用于移动数据
- javascript - 使用 defineProperty 继承 JavaScript 原型
- c# - GUIStyle.hover 状态是否适用于 Unity 编辑器标签(或除 Button 之外的其他控件)?
- python - 使用装饰器如何调用我的函数?
- python - 使用 pytest 时加载模块的根在哪里?
- reactjs - 如何在reactjs中的render方法中添加条件
- r - 调用 aaply 导致因子级别错误消息