2014-07-16 3 views
0

У меня возникли проблемы с небольшим количеством кода, который использует функцию ajax $ .post для отправки имени в файл php, который затем выполняет некоторые действия с ним. Я считаю, что проблема заключается в коде ajax, потому что я обнаружил, что опубликованное значение никогда не приводит к массиву $ _POST (т. Е. Массив $ _POST не установлен). Однако я не думаю, что с обеих сторон есть какие-то синтаксические ошибки, поэтому я смущен тем, почему это не работает.Ajax jQuery post troubles

Это jQuery.

if ($(e.target).hasClass('shootNames')) { 
       var shootName = $(e.target).attr('id'); 
       var par = $('#' + shootName).parent().attr("id"); 

       $.post("displayImages.php", {shoot: shootName}); //the information I would like to send 

       $('#' + par).load("displayImages.php").off('click', $('#' + par)); 
      }//end if hasClass 

И соответствующий бит php.

if (isset($_POST['shoot'])) { 
$shootname = $_POST['shoot'][0]; //pick out just the first member of the $_POST array 
$filepath = "images/u/$foo/$shootname"; 
$f->FilesAsImages($filepath); 
}//end if 

Благодарим за любую помощь.

+0

вы можете проверить AJAX запрос с помощью ваших инструментов браузеров для разработчиков ... там вы должны быть в состоянии увидеть, что являются Титулы, которые отправляются на сервер –

ответ

0

Вы ударяя displayImages.php раз в $.post вызова и там он должен вернуть свой имидж, но вы не имеете success обработчик там, так что он ничего не делает с результатом. Затем вы снова ударяете displayImages.php с .load и не передаете ему что-либо, поэтому он ничего не делает, как ожидалось. Добавление обработчика success в ваш $.post вызов и выполнение работы там будут делать то, что вы хотите.

Смотрите документацию $.post больше: код http://api.jquery.com/jquery.post/

Пример:

if ($(e.target).hasClass('shootNames')) { 
    var shootName = $(e.target).attr('id'); 
    var par = $('#' + shootName).parent().attr("id"); 

    $.post("displayImages.php", { 
     shoot: shootName 
    }, function(data, textStatus, jqXHR) { 
     // this is the success function and the 3 arguments it gives you, remove the 2nd/3rd if you don't use them 
     $('#' + par).html(data).off('click', $('#' + par)); 
    }); 
} 
+0

эй, так что я просто попробовал, как так : $ .post ("displayImages.php",. {стрелять: shootName}, функция() { \t \t \t \t \t \t $ ('#' + п) .load ("displayImages.php") от ('click', $ ('#' + par)); \t \t \t \t \t}); И это все равно дает мне тот же результат. – nmac

+0

Фактически, это работает – nmac

0

изменения Try из этого

$.post("displayImages.php", {shoot: shootName}); //the information I would like to send 

этой

$.post("displayImages.php", {'shoot[]': shootName}); //the information I would like to send 

Источник: http://api.jquery.com/jquery.post/

+0

не работает, проблема не в объекте данных. – nmac