PHP $_GET
superglobal заполняется данными из строки запроса запрошенного URL-адреса (независимо от метода HTTP, используемого для выполнения запроса).
Это URL, который вы используете:
url: 'follow_user.php',
В нем нет строки запроса.
Возможно, вы ожидаете, что он скопирует строку запроса со страницы, содержащей JavaScript. Это не работает так, вам нужно предоставить данные явно.
Немного в стороне:
Вы вставляете данные в базу данных. Вы должны использовать запрос POST для этого (и вы это делаете), но вы должны передавать данные в теле запроса (в противном случае вы, скорее всего, случайно создадите что-то, что неправильно отвечает на запрос GET.
Итак, обо всем по порядку: измените PHP, чтобы использовать $_POST
вместо $_GET
.
Пока вы редактируете его, ваш PHP опасно уязвим для атак SQL-инъекций . Вам нужно научиться защищать ваш код от них.
ОК, затем вам нужно получить данные из строки запроса текущей страницы.
Вы можете прочитать это в JavaScript. Этот ответ объясняет несколько подходов.
Получив данные, вы можете указать их в запросе:
var user_id = (new URL(url_string)).searchParams.get("user_id");
// See the answer linked above to see how this works and for compatibility with old browsers
$.ajax({
type: 'POST',
url: 'follow_user.php',
data: { user_id: user_id },
success: function(data) {
alert('done');
}
});
… запомните, это помещает его в тело запроса, поэтому вам нужно прочитать его с $_POST
, а не $_GET
.