Ошибка при отправке двойных кавычек с ajax - PullRequest
0 голосов
/ 12 марта 2020

Я хочу позволить пользователям вводить URL. Я хочу отправить этот URL на другую страницу моего сайта, используя Ajax. На другой странице он сохраняет 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, он работает и ошибок нет. Но если пользователь вводит ", выдает ошибку.

Кто-нибудь знает, как я могу решить эту проблему?

1 Ответ

1 голос
/ 12 марта 2020

Используйте 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
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...