Форма отправки JQuery Ajax возвращает HTML-страницу страницы индекса - PullRequest
0 голосов
/ 10 марта 2010

Эй, ребята, мне нужна помощь. Получите HTML-форму, которую я отправляю, используя JQUERY ajax вместо обновления с ответом сервера, для обновления используется индексная страница html.

Форма

  <form   id="publishimages" action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
    <input type="submit"  name="publishimages"  value="Publish Selected"  />

</form> 

PHP

if(isset($_POST['publish'])&&$_POST['publish']=="Publish Images"){
//array of sections that may be allowed to have multiple images
$allow_multiple=Array(1 ,7);
$id=filter_input(INPUT_POST,"id",FILTER_SANITIZE_STRING);
$section=filter_input(INPUT_POST,"section",FILTER_SANITIZE_STRING);
//change the string into an array
$id=explode(",", $id);
    //use the array as id
$count=0;
//ensure only 1 pic is published for other sections which do not need gallery
if(!in_array($section, $allow_multiple )){

$query="UPDATE photos SET publish='0' WHERE publish='1' AND section='$section'";

$mysqli->query($query);
echo $mysqli->error;
}
foreach($id as $key=>$value){
    $value=(int)($value);

    if(is_int($value)){

 $sql="UPDATE photos SET publish='1' WHERE id='$value'";

    $result=$mysqli->query($sql);
    echo $mysqli->error;
    if($mysqli->affected_rows>0){$count++;}

    }

}
echo "$count images have been set and will now appear in their respective sections";
}

Jquery

$('#publishimages').submit(function() {

    //get selected
    var section=$(this).siblings("form").find("#imagesection").val();
    // inside event callbacks 'this' is the DOM element so we first
    // wrap it in a jQuery object and then invoke ajaxSubmit
    var val = [];
    if($(this).find(':checkbox').length >0){
            $(this).find(':checkbox:checked').each(function(i){
            val[i] = $(this).val();
            });
        }
    if($(this).find(':radio').length >0){
            $(this).find(':radio:checked').each(function(i){
            val[i] = $(this).val();
            });
        } 

    $.ajax({
        data:"publish=Publish Images&id="+ val + "&section="+ section,
        type: "POST",
        url: "phpscripts.php",
        success: function(msg){$("#notice").html(msg)
                        }
        // !!! Important !!!
        // always return false to prevent standard browser submit and page navigation
    });
    return false;
})

Вот так выглядит ответ сервера, даже если он вставляется в базу данных и действительно ли я хочу с PHP

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    <title></title>
     <link type="text/css" rel="stylesheet" href="css/admin.css" />
    <script type="text/javascript" src="../scripts/jquery.js"></script>
    <script type="text/javascript" src="jscripts/jquery.MultiFile.js"></script>
    <script type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script>
    <script type="text/javascript" src="jscripts/sitescript.js"></script>
</head>
     <body>
    <div class="logd_div"><span class="logd">You are logged as <span>admin</span></span>&nbsp;|&nbsp:<a href="index.php?page=changepwd">Change Password</a>&nbsp;|&nbsp; <a href="logout.php">Sign Out</a></div>
              <div class="admincontent">

Вопрос в том, почему мой сервер отвечает на весь HTML-код страницы, а не только на мой ответ в PHP?

Ответы [ 2 ]

0 голосов
/ 11 марта 2010

Спасибо, Джош. Оказывается, в процессе попытки предотвратить прямой доступ к phpscripts.php был введен этот код if(!isset($allowed)){header('Location:index.php');}, который перенаправлял на домашнюю страницу.

Спасибо за вашу помощь!

0 голосов
/ 10 марта 2010

Для подтверждения - вы видите домашнюю страницу, вставленную в #notice, или браузер перенаправляет на домашнюю страницу? То есть действие отправки формы по умолчанию отменяется или нет?

Используете ли вы какие-либо веб-фреймворки, такие как Zend Framework, Wordpress, PHPCake и т. Д.?

EDIT1 : Это необычная проблема. Несколько последующих вопросов:

  1. Включен ли в ваш вопрос полный код phpscripts.php? если нет, пожалуйста, включите немного больше кода. Не забудьте вставить его между тегами <code> и в пользовательском интерфейсе StackOverflow.com, чтобы нам было легко читать

  2. Попробуйте поставить строку кода: die('this is a test'); в верхней части phpscripts.php. Повторите процесс и посмотрите, видите ли вы домашнюю страницу или this is a test. Если это последнее, переместите функцию die() на несколько строк вниз и повторите. Это поможет вам диагностировать, что не так. Пожалуйста, опубликуйте результаты, если вы все еще застряли ...

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