2010-03-13 3 views
1

Я делаю POST до еще php-файл, который я хочу отобразить в браузере. функция jquery post не перенаправляется на другую страницу. он ожидает, что файл app-display.php вернет ему данные. взгляните на код.php POST response

echo '<div class="showcase_URL"><a class="purl" name="'.$row->num.'" href="#">PROJECT URL</a></div>'; 

то, что я до сих пор в JavaScript является:

$(".showcase_URL a").click(function() { 
    //alert($(this).attr("name")); 
    var number = $(this).attr("name");  
    $.post(
    "app-display.php", 
    {app: number}, 
    function(data){ 
     top.location.href = 'app-display.php'; 
     }); 
}); 

что я имею в приложение-display.php:

$query = 'SELECT num, title, thumb_url, url, type, cat, dated, details FROM app WHERE `num` = "$_POST[app]"'; 

, но в настоящее время она дает мне страницу без содержимое app-display.php. все остальные фрагменты страницы загружаются: заголовок, нижний колонтитул и т. д. Ответ PHP (в Firebug) Я получаю нормальный html страницы.

как я должен это делать?

+0

Можете ли вы объяснить «так ясно, используя jQuery POST wont work, поскольку он работает через AJAX»? Я смущен ... вы можете публиковать с помощью jQuery и отображать страницу, как хотите. Например, когда вы голосуете на SO, вы публикуете и получаете общее количество голосов в качестве ответа и используете его для обновления значения страницы. –

+0

@amit: опубликованный запрос открыт для SQL-инъекции. Надеюсь, это иллюстративно и не отражает то, что у вас есть в вашем фактическом коде. Кроме того, текущий дизайн не очень ясен. Имена для всех файлов вместе с большим количеством их содержимого (быть полным, но кратким, пример кода должен быть минимальным тестовым примером) должны помочь прояснить. – outis

ответ

1

Просто используйте простой старый <form action="app-display.php"> Таким образом вам не нужно будет возвращать данные.

0

Что еще у вас есть на странице PHP, кроме строки, которую вы показываете, которая просто определяет переменную. Работает ли он, если вы просто вложите в него какой-то необработанный текст, отобразится ли он? И в конце концов я предполагаю, что ваша строка запроса неверна, она должна быть прочитана $query = 'SELECT num, title, thumb_url, url, type, cat, dated, details FROM app WHERE num = '.$_POST["app"];

1

Установка top.location.href в вашем обратном вызове - проблема - это перенаправление. $.post() правильно POSTING, и как только это будет завершено, он вызывает функцию обратного вызова, возвращая любые результаты в параметре data. Переадресовывая обратный вызов, вы бросаете все это и делаете прямой запрос GET на app-display.php.

Если вы на самом деле имеете в виду, что это вызов AJAX &, не переходите на новую страницу, измените функцию обратного вызова, чтобы что-то сделать с параметром data вместо перенаправления. Что-то вроде function(data) { $('#some-div').html(data); } должно сбрасывать ответ в какой-то div.