2016-12-25 5 views
0

Я запускаю скрипт, который должен отправлять идентификационный номер пользователя в базу данных. База данных захватывает кучу идентификаторов изображений из любой строки, соответствующей совпадающему идентификатору пользователя, затем переходит в другую таблицу и захватывает URL-адреса изображений, соответствующие идентификаторам изображений. Затем он возвращает URL-адреса.Успешный вызов AJAX при работе PHP-скрипт ничего не возвращает

PHP-скрипт отлично работает сам по себе, он возвращает правильный URL-адрес в прямом тексте или JSON, как было запрошено.

Что касается jQuery, вызов AJAX действительно попадает в функцию успеха, потому что я могу попросить его document.write что-то там, и он это сделает. Однако, когда я прошу распечатать данные, вызов AJAX выполняется вечно (я думаю, что он многократно называет функцию успеха? На основе браузера говорит мне, что он либо ждет, либо переносит данные повторно). Несмотря на это, на экране ничего не печатается, несмотря на повторяющийся скрипт.

О, также нет ошибок, возвращаемых на консоль.

Я не уверен, почему он это делает, и поэтому я здесь. Я просматривал другие сообщения здесь и в случайном порядке в Интернете, без везения. Любая помощь приветствуется!

Вот PHP:

<?php 
header('Content-type: text/plain; charset=utf-8'); 
// define variables and set to empty values 
$servername = "localhost"; 
$username = "root"; 
$password = "Wolf*6262"; 
$dbname = "Game"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

if ($_SERVER["REQUEST_METHOD"] == "GET") { 
    $id = $_GET["id"]; 
} 

$query1 = mysqli_query($conn, "SELECT imageids FROM users WHERE id = $id"); 

// Start user session 
if ($imageIds = mysqli_fetch_array($query1)) { 
    fetchUrls($imageIds, $conn); 
} else { 
    echo "Fail"; 
} 

function fetchUrls($imageIds, $conn) { 
    $query2 = mysqli_query($conn, "SELECT url FROM charimages WHERE id = '1'"); 
    $array = mysqli_fetch_assoc($query2); 
    $url = $array["url"]; 
    exit($url); 
} 

$conn->close(); 

JQuery:

function getUrls (userId) { 
    $.ajax({ 
     type: 'GET', 
     data: {id:userId}, 
     URL: 'fetchChar.php', 
     async: false, 
     dataType: 'text', 
     success: function (data) { 
      document.write(data); 
      document.write(userId); 
     } 
    }); 
} 

Aaand вот где я определяю USERID и вызвать getUrls, это в отдельном HTML-файле:

var userId = <?php echo $_SESSION["id"]; ?>; 
$(document).ready(getUrls(userId)); 
+0

почему 'асинхронный: false'? , вы пытались выполнить 'fetchChar.php' самостоятельно, чтобы убедиться, что он работает правильно? – Taki

+0

Я читал где-то, что асинхронно работает AJAX. Это никак не влияет на ситуацию, видимо, потому что, когда я прокомментирую это, ничего не меняется. И да, я запустил fetchChar.php самостоятельно, с единственным изменением, устанавливающим переменную $ id = 1, в отличие от сценария, захватывающего эту переменную из вызова AJAX. Так что, возможно, это может быть проблема с захватом этой переменной в первую очередь. Мне не удалось найти способ проверить эту возможность. – Nienaber

+0

хорошо .. он не может многократно вызывать функцию успеха, вы можете попробовать несколько вещей: 'echo $ id' inside' if ($ _ SERVER ['REQ ...', чтобы узнать, получаете ли вы контент, и вы можете посмотреть в сети браузера, чтобы узнать, что вы получаете как ответ, – Taki

ответ

0

Можете ли вы изменить свой скрипт: как стандартный способ, который предпочитает jQuery: 1. Изменить URL в url 2. Избегайте async определения Как это

$.ajax({ 
    type: 'GET', 
    data:{ id: userId }, 
    url: 'fetchChar.php', 
    // async: false, 
    dataType: 'text', 
    success: function (data) { 
     console.log(data); 
     //document.write(data); 
     //document.write(userId); 
    } 

}); 

Я добавил журнал консоли, чтобы показать возвращаемые данные, так что вы можете убедиться, что ваши данные правильно возвращения из fetchChar.php файла с помощью журнала консоли.

0

Законченный делает следующий, вопрос решен:

Javascript файл:

$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: "fetchChar.php", 
    data: {id:userId}, 
    success: function(data) { 
    document.write(JSON.stringify(data)); 
    } 
}); 

PHP файл, ближе к концу:

function fetchUrls($imageIds, $conn) { 
    $query2 = mysqli_query($conn, "SELECT url FROM charimages WHERE id = 1"); 
    $array = mysqli_fetch_assoc($query2); 
    $url = $array['url']; 
    $url = json_encode($url); 
    echo $url; 
    exit(); 
}