Nano Hash - криптовалюты, майнинг, программирование

Ajax-запрос к localhost php с использованием jsonp не работает

Привет, я использую Jquery для вызова php-скрипта. PHP-скрипт находится по адресу http://localhost:8080/getData.php и обращается к базе данных MySql.

Я использую настройку сервера tomcat на своем компьютере с адресом сервера localhost: 8080.

Я просмотрел ответ ajax data.status, и он равен 0

Я читал о междоменных запросах и знаю, что это не должно быть проблемой, если я использую JSONp.

Любая помощь приветствуется.

Часть jquery внутри моего HTML, которую я использую для вызова функции ajax, приведена ниже:

<script type="text/javascript">
$(document).ready(function() {
   $.ajax({
       type:'GET',
       url:'http://localhost/getData.php',
       datatype:'jsonp',
       timeout: 5000,
       success: function(data){
           //data loaded
           alert('loaded');

       },
       error: function(data){
           // error on loading data
           alert('error');        
       }
    });
});
</script>

Фактический код getData.php приведен ниже:

<?php
header('Content-type: application/json');

$server = "127.0.0.1";
$username = "root";
$password = "";
$database = "deals";

$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
mysql_select_db($database, $con);

$sql = "SELECT area_id, name AS area_name, sector AS area_sector FROM deals.areas ORDER BY name";
$result = mysql_query($sql) or die ("Query error: " . mysql_error());

$records = array();

while($row = mysql_fetch_assoc($result)) {
    $records[] = $row;
}

mysql_close($con);

echo $_GET['jsoncallback'] . '(' . json_encode($records) . ');';
?>
20.12.2012

Ответы:


1

Я вижу три проблемы:

  1. Ваш PHP-скрипт ищет параметр GET с именем jsoncallback, но это не то имя, которое jQuery отправляет по умолчанию, а callback. Либо измените свой PHP, чтобы вместо этого использовать callback:

    // Here ----v
    echo $_GET['callback'] . '(' . json_encode($records) . ');';
    

    ...или добавьте этот параметр в свой вызов ajax, чтобы указать jQuery использовать вместо него jsoncallback:

    jsonp: "jsoncallback",
    

    Вы можете использовать вкладку «Сеть» в инструментах разработки вашего браузера, чтобы проверить вызов и посмотреть, как выглядит строка запроса, чтобы убедиться, что они совпадают.

  2. У вас есть опечатка в параметрах ajax, у вас есть datatype:'jsonp' вместо dataType:'jsonp' (T в dataType должно быть в верхнем регистре), поэтому jQuery вообще не будет пытаться выполнить вызов JSON-P, он попробует XHR.

  3. В своем вопросе вы сказали, что страница PHP находится в http://localhost:8080/getData.php, но url, который вы указали для jQuery, - это http://localhost/getData.php (без порта).

20.12.2012
  • Привет TJ Crowder, я попробую, когда вернусь домой сегодня. Я довольно новичок в этом, вы сделали что-то похожее на то, что я делаю? если да, то знаете ли вы о каких-либо ссылках/учебниках в Интернете? Большое спасибо за ваш ответ. 20.12.2012
  • @user1907509: user1907509: Я не знаю конкретного, но в Интернете нет недостатка в примерах jQuery/JSON-P. :-) Я заметил пару других проблем с вашим звонком и обновил ответ, надеюсь, это поможет. 20.12.2012
  • T.J Crowder Я попробовал это и смог получить ответ от php, но ответ - это просто фактический исходный код php, а не ожидаемые данные JSON. Может быть, я делаю что-то не так на стороне php. PHP-скрипт выглядит правильно? 20.12.2012
  • @ user1907509: Похоже, PHP неправильно настроен на вашем веб-сервере. 20.12.2012
  • @ user1907509: Отлично! Рад, что помог. Лучший, 21.12.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..