Ссылки JQuery Return не работают, когда Ajax - PullRequest
0 голосов
/ 18 декабря 2008

jQuery обратные ссылки не работают. Я использовал jQuery и базовую функцию Ajax. Мой jQuery возвращает ссылки из файла Links_ajax.php.

Я даю примеры кода.

GetCustomerData.php имеет:

<html>
    <script type="text/javascript">
    <script src="ajax.js" type="text/javascript">

        $(function() {
            .....

            $.ajax({
                type: 'POST',
                url: 'Links_ajax.php',
                data: 'category='+category  ,
                success: function(data){
                    $("#response").html(data);
                }
            });
        }
        ......
    }

    ...

    <! Links return here
        <div id="response">
        </div>
</html>

<?
  echo "Some Code";


?>

  ....

My Links_ajax.php имеет следующий код

....

echo '<a href="getCustomerData.php?id=10" onclick="requestCustomerInfo();return false;">show me </a>';
echo '<a href="getCustomerData.php?id=11" onclick="requestCustomerInfo();return false;">show me </a>';

....

Теперь я захожу на главную страницу getCustomerData.php. Я использовал функцию Ajax, которая возвращает ссылку из Links_ajax.php.

 .....

Итак, мой ajax.js содержит следующие сценарии Ajax.

var url = "GetCustomerData.php?id="; // The server-side script
function handleHttpResponse() {
    if (http.readyState == 4) {
        if (http.status == 200) {
            var results = http.responseText;
            document.getElementById('divCustomerInfo').innerHTML = results;
        }
    }
}

function requestCustomerInfo(event) {
    if(event &&event.preventDefault) event.preventDefault();
    else if (window.event && window.event.returnValue)
        window.eventReturnValue = false;
        var sId = 10;
        http.open("GET", url + escape(sId), true);
        http.onreadystatechange = handleHttpResponse;
        http.send(null);
    }

    function getHTTPObject() {
        var xmlhttp;

        if (window.XMLHttpRequest){
            xmlhttp = new XMLHttpRequest();
        }
        else if (window.ActiveXObject){
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            if (!xmlhttp){
                xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
        }
        return xmlhttp;
    }

    var http = getHTTPObject(); // We create the HTTP object

......

Теперь я подхожу к проблеме. Когда я выполняю GetCustomerdata.php, я могу получить все ссылки из ajax.JQuery. И после нажатия этой кнопки мне нужна базовая функция Ajax с момента загрузки того же <div> </div>. Но я не могу просмотреть это, хотя я сделал. Что-то не так в моем коде? Или я должен использовать любую другую функцию?

Ответы [ 3 ]

0 голосов
/ 23 января 2009

Я настоятельно рекомендую использовать FireFox + FireBug для проверки этого или другой браузер через HTTP-прокси, который будет регистрировать ваш трафик. FireBug покажет вам все запросы Ajax и ответы с вашей страницы и должен помочь вам определить, возвращаются ли данные и что.

0 голосов
/ 28 января 2009

Сначала я удивляюсь, почему вы пишете пользовательскую функцию HTTPrequest, когда у вас уже есть объект jquery, на самом деле вы уже используете $ .ajax вверху, а потом создаете getHTTPObject ().

Проблема в том, что функция JavaScript, которую requestCustomerInfo () никогда не делегирует для обработки ссылки на данные ответа ajax, необходимо делегировать функцию как обратный вызов запроса ajax

$.ajax({
       type:'POST',
       url: 'Links_ajax.php',
       dataType: 'html',
       data:'category='+category,
       success: function(data){
           $("#response").html(data);
           // here add the link click handler
           $("#response a").click(function(){
                // make http get request & custom handler
                $.get('GetCustomerData.php?id=10',function(result){
                    $('#divCustomerInfo').html(result);
                }); return false;
            });
       }
});
0 голосов
/ 01 января 2009

Сначала попробуйте следующее:

success: function(data){
     //$("#response").html(data);
     alert(data);
   }

Таким образом, вы будете знать, действительно ли он возвращает данные.

Если это работает, вы можете заменить

`$("#response").html(data)`  

с

 document.getElementById('response').innerHTML = data;

Это должно сработать.

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