AJAX бездействующий - PullRequest
0 голосов
/ 30 мая 2011

Я только что построил функцию AJAX.Они не содержат ошибок с помощью firebut, и возвращается правильный ответ, но по какой-то причине он не будет заполнять значение поля #crap of div div html # outdirections.

AJAX ::

function appdirections() {
    var start = $('#start').val();
    var end = $('#end').val();

    var dataString = 'start=' + start + '&end=' + end;

    $.ajax({
            type: 'POST',
             url: 'http://www.golfbrowser.com/courses/wentworth-east/?appdirections',
             data: dataString,
             beforeSend: function() {
                 },
                dataType:'json',
             success: function(data) {
     $('#outdirections').html(data.output);
     $('#crap').val(data.output);
},
      error: function(data) {
                 },
         });
}

PHP ::

<?php 

$start = $_POST['start'];
$end = $_POST['end'];

$xml = simplexml_load_file('http://maps.googleapis.com/maps/api/directions/xml?origin='.$start.'&destination='.$end.'&sensor=false');


// data to fetch

$start = $xml->xpath("/DirectionsResponse/route/leg/start_address");

$end = $xml->xpath("/DirectionsResponse/route/leg/end_address");



// output

echo json_encode( array('output'=>$start));


?>

HTML

<input type="text" id="crap" value=""/>

<div id="outdirections"></div>

<input id="start" type="text" spellcheck="false" placeholder="enter your post code" onkeypress="if (event.keyCode == 13) {appdirections();}"/>


<input id="end" type="text" value="wentworth virginia water" disabled="disabled"/>

Вот ответ от Firebug

{"output":[{"0":"Winkfield, Windsor, Berkshire SL4 2ES, UK"}],"end":[{"0":"Wentworth, Surrey GU25 4, UK"}]}

Ответы [ 3 ]

1 голос
/ 30 мая 2011

Скорее всего, у вас нет ничего в data.output

Попробуйте это и посмотрите, что он выводит

 $('#outdirections').html(data);
 $('#crap').val(data);

Я предполагаю, что #crap это поле ввода?

РЕДАКТИРОВАТЬ

в любом случае, попробуйте это alert(data.output[0].get("0"))

или, если вы упростили, вы можете сделать это:

alert(data.output[0])
0 голосов
/ 30 мая 2011

Посмотрите на страницу руководства для SimpleXMLElement::xpath:

public array SimpleXMLElement::xpath ( string $path )

Этот метод возвращает массив значений, соответствующих запросу XPath.Затем вы кодируете массив с помощью json_encode и, к удивлению, он превращается в массив JSON.

У вас есть два варианта.Вы можете получить элемент массива с помощью PHP или Javascript.Я думаю, с PHP это проще сделать и сэкономит несколько байтов!

echo json_encode( array('output'=>$start[0]));
0 голосов
/ 30 мая 2011

<input id="#start" onkeypress="if (event.keyCode == 13) {appdirections();}" /> подразумевает, что этот код работает только для условия event.keyCode == 13 ....... Это клавиша ввода, и элемент ввода не будет содержать значение клавиши ввода, как / b / c (я так думаю),Для этого, когда вы нажимаете Enter и вызываете appdirections(), функция $('#start').val() имеет значение null, следовательно, код не работает ...

Поместите поля ввода внутри тега <form> и вызовите функцию ajax напредставить.


Вы уверены, что данные верны?Попробуйте поместить предупреждение внутри успеха и проверьте, работает ли оно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...