AJAX-запрос не выполняется из-за отсутствия переменной DEFINE в PHP - PullRequest
2 голосов
/ 19 июня 2011

Я новичок в AJAX / jQuery с PHP.

Я пытаюсь вызвать скрипт PHP через AJAX, используя XMLHttpRequest или jQuery.В обоих случаях вызов не удался, потому что php-файл, в который я звоню, содержит в самой первой строке следующую проверку

if (!defined("SOMETHING")) { die("Error. You cannot access this file directly");}

, которая приводит к сбою моего вызова, потому что эта переменная не определена в этом случае, как язвоню извне.Это условие просто проверяет, является ли вызывающий объект тем же веб-приложением или вызов поступает извне (тогда он будет отклонен).

Есть ли обходной путь для него, не снимая эту проверку?Можно ли как-то установить эту ожидаемую переменную с помощью AJAX / jQuery?

Есть ли способ, как вызвать конкретный метод PHP через AJAX без вызова всего файла PHP?

Заранее спасибо Tomas

1 Ответ

2 голосов
/ 19 июня 2011

Хм ... вы можете это сделать, но я не уверен, что это безопасно или так, как вы хотели бы.

Ваш jQuery должен опубликовать переменную с GET или POST, который вы должны проверить на стороне PHP.Если вы получили эту переменную, определите SOMETHING.

Вот ваш jQuery, используя метод POST:

$.post('ajax.php', {SOMETHING: true}, function(ret){
    // do whatever you like with the return here
});

Вот ваш PHP, который определит SOMETHING если он получает запрос $_POST с переменной SOMETHING в нем.

<?php
if(isset($_POST['SOMETHING'])){
    define('SOMETHING', true);
}
if (!defined("SOMETHING")) { die("Error. You cannot access this file directly");}

// do anything you like here
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...