JQuery AJAX-запрос к PHP, как вернуть только простой текст - PullRequest
1 голос
/ 30 декабря 2010

Я делаю ajax-запрос на страницу php, и я не могу на всю жизнь заставить его просто вернуть простой текст.

    $.ajax({
       type: 'GET',
       url: '/shipping/test.php',
       cache: false,
       dataType: 'text',
       data: myData,   
       success: function(data){
        console.log(data)
       }   
     });

в test.php Я включаю этот скрипт , чтобы получить ставки UPS. Затем я вызываю функцию с $rate = ups($dest_zip,$service,$weight,$length,$width,$height);

Я делаю echo $rate; в нижней части test.php. При просмотре в браузере показывает скорость, это здорово. Но когда я запрашиваю страницу через ajax, я получаю кучу XML. Пасти здесь: http://pastie.org/1416142

Мой вопрос: как мне получить его, чтобы я мог просто вернуть строку простого текста из вызова ajax, где результат data будет числом?

Редактировать, вот что я вижу на вкладке Ответ Firebug:

alt text

Вкладка HTML:

alt text

Ответы [ 4 ]

2 голосов
/ 30 декабря 2010

Не подавляйте XML, используйте его. Это то, для чего AJAX всегда был предназначен. Вы захотите просто проанализировать XML и получить необходимые данные из него, что, к счастью, JQuery делает довольно легко.

Сначала выберите тип данных AJAX:

dataType: 'xml'

Затем в вашем обработчике ответа ajax:

alert($(xml_data).find("PriceXMLNodeName").text());

Вам, конечно, придется выяснить и заменить PriceXMLNodeName реальным именем узла, в котором находится цена, в ответе XML. Я не могу видеть, как имя узла на вашем скриншоте. Хотя это должно быть довольно просто увидеть (это имя тега, в котором указана цена).

2 голосов
/ 30 декабря 2010

PHP-скрипт, который вы используете, выводит XML. Посмотрите на upsRate.php, и вы увидите целую кучу XML в строке.

Также вы можете закомментировать строку 96 файла upsRate.php, потому что она выводит некоторые комментарии, которые вы увидите, когда получите страницу с помощью ajax.

1 голос
/ 30 декабря 2010

Я собираюсь поставить это как ответ, потому что это решило немедленное решение, подавив вывод xml. Взято из этого SO вопроса .

ob_start();
$rate = ups($dest_zip,$service,$weight,$length,$width,$height);
ob_end_clean();

Это позволило мне использовать переменную $ rate (которая содержит желаемое значение) без получения xml.Я не знаю, правильно это или нет, поэтому я позволю другим заняться этим.

1 голос
/ 30 декабря 2010

Похоже, что функция ups() возвращает XML, а не простой текст.У вас есть два возможных варианта:

  1. Проверьте, предоставляет ли используемый вами API функцию, которая возвращает простой текст вместо XML.Это, вероятно, было бы идеальным решением.
  2. Синтаксический анализ XML-кода и отображение значения, которое вас интересует. Следующее должно сделать трюк: EDIT: только что заметил, что функция ups() отображает заголовок HTTP и XML ответа в HTML-комментарии, так что на самом деле она не делает ничего, кроме того, чтобы напутать вас.Если возможно, удалите это выражение echo из ups(), и вы должны быть золотым.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...