猿问

使用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,它可以工作并且没有错误。但是,如果用户输入",则会出现错误。


有谁知道我该如何解决这个问题?


人到中年有点甜
浏览 133回答 1
1回答

杨魅力

用于JSON.stringify创建 JSON,不要手动创建。它将正确地转义引号。$.ajax({&nbsp; &nbsp; type: "POST",&nbsp; &nbsp; url: "api/checkURL",&nbsp; &nbsp; processData: false,&nbsp; &nbsp; contentType: "application/json",&nbsp; &nbsp; data: JSON.stringify({URL: url}),&nbsp; &nbsp; success: function(r) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //do something here&nbsp; &nbsp; }})
随时随地看视频慕课网APP
我要回答