как очень хорошо использовать два метода $ .post для передачи данных из 2 разных баз данных

0
 function ChangeGallery(){
    var GalleryName = $('.SubSubGalleryLock').text();

    /*Send string to Data1.php and include Tags from Database*/
    $.post("Data1.php", {  Sections: GalleryName  },
    function(data){
         $(".IncludeData").append(data);
    }); 

    /*send string to Data2.php and include Events data from Database*/
    $.post("Data2.php",{  GallerySec: GalleryName  },
    function(response){
         /*when i use alert method, this function works very well, why?*/
         alert('SomeString');
     var data = jQuery.parseJSON(response);
         var ImageID  = data[0];
         var ImageSrc = data[1];
     $(ImageID).click(function(){
        $(".LargeImage").attr('src', ImageSrc);
     });
     });
};

в Data1.php

  /*give data from database1 and print to HTML File*/
  if ($_POST['Sections']) == "String")
  {  $results = mysql_query("SELECT * FROM Table1");
  while($row = mysql_fetch_array($results))
  { echo $row['Tags']; }

в Data2.php

  /*give data from database2 and Use for events*/
  if ($_POST['GallerySec']) == "String")
  {  $results = mysql_query("SELECT * FROM Table2");
  while($row = mysql_fetch_array($results))
  { echo json_encode($row); }

на стороне клиента, когда я его использую, Data1.php работает очень хорошо, но Data2.php только тогда, когда я пишу

alert('Some stringh');

после

var data = jQuery.parseJSON(response); 

лайн, это хорошо работает, почему? что из-за этой проблемы?

  • 0
    Вы хотите изменить источник изображения после того, как ImageID будет активирован?
  • 0
    это работает верно, но когда я использую метод alert ()
Показать ещё 4 комментария
Теги:

1 ответ

1
Лучший ответ

Я собираюсь угадать, что вам понадобится вторая .post() которая будет обработана ПОСЛЕ первого .post() и когда вы включите alert(), который гарантирует, что он пойдет в этом порядке, но без alert(), это условие гонки и зависит от того, какой .post() возвращается быстрее.

Есть несколько способов исправить последовательность. Самый простой способ - запустить второй .post() из обработчика успеха первого, чтобы вы знали, что первый уже завершен.

Вы также можете использовать обещания jQuery, или вы можете использовать свои собственные флаги, чтобы отслеживать, что закончилось, и вызывать последний бит кода только тогда, когда оба они закончили.

Вот как вы могли бы запустить второй .post() из обработчика успеха первого, чтобы гарантировать порядок:

function ChangeGallery(){
    var GalleryName = $('.SubSubGalleryLock').text();

    /*Send string to Data1.php and include Tags from Database*/
    $.post("Data1.php", {  Sections: GalleryName  },
    function(data){
         $(".IncludeData").append(data);
        /*send string to Data2.php and include Events data from Database*/
        $.post("Data2.php",{  GallerySec: GalleryName  },
            function(response){
                var data = jQuery.parseJSON(response);
                var ImageID  = data[0];
                var ImageSrc = data[1];
                $(ImageID).click(function(){
                    $(".LargeImage").attr('src', ImageSrc);
                });
         }); 
     });
};
  • 0
    ПОСЛЕ ТОГО, КАК я создаю отдельную функцию для использования второго .post ()?
  • 0
    что обещает jQuery?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню