PHP и Ajax - могу ли я использовать POST для получения значения формы без перезагрузки - PullRequest
0 голосов
/ 19 января 2011

У меня есть php-файл «Критерии» для отображения набора html множественных выпадающих списков, которые можно использовать для создания критериев для запроса.

У меня есть php-файл «Результаты», который создает оператор SQLв соответствии с выбранными параметрами из различных выпадающих меню, выполняет запрос, а затем отображает результаты этого запроса.

Я хотел бы пропустить необходимость перезагрузить и отобразить все html для каждого выпадающего списка выбора, поскольку каждый из них содержитсотни вариантов.Ajax был моим решением для этого.

Для каждого выпадающего списка событие onchange вызывает мой javascript, который выполняет Ajax-вызов к моей странице «Results».Эта страница «Результаты» получит значение каждого выпадающего списка, используя $ _POST ['htmlSelectDropdownID'].

Теперь, когда я реализовал Ajax, проблема в том, что выбранное значение из выпадающих списков непопадаю в мой файл результатов ... и я могу только предположить, что это потому, что HTML никогда не перезагружался ...

У кого-нибудь есть предложения, как решить эту проблему?

Спасибо,

------------------------ код --------------------------

Мой Javascript / Ajax

 function AjaxPostback(){
/*if (str=="")
{
    document.getElementById("divTest").innerHTML="";
    return;
} */
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
    if (xmlhttp.readyState==4)// && xmlhttp.status==200)
    {
        document.getElementById("divResults").innerHTML=xmlhttp.responseText;
    }
}
xmlhttp.open("GET","Results.php", true); //?q="+str,true);
xmlhttp.send();}

Только 1 из раскрывающегося списка на моей странице

Group By <select id="selGroupBy" name="selGroupBy" onchange="AjaxPostback()">
            <option value='Department' <?php if ($_POST['selGroupBy'] == 'Department') echo 'selected="selected"'; ?>>Department</option>
            <option value='Store' <?php if ($_POST['selGroupBy'] == 'Store') echo 'selected="selected"'; ?>>Store</option>
            <option value='Date' <?php if ($_POST['selGroupBy'] == 'Date') echo 'selected="selected"'; ?>>Date</option>
            <option value='Size' <?php if ($_POST['selGroupBy'] == 'Size') echo 'selected="selected"'; ?>>Size</option>
        </select>

- HTML, который создаетКритерии (выпадающий html) и div (divResults), который является innerHTML, заполняется javascript

<div>
            <?php include ("Criteria.php"); ?>

            <div class="divResults" id="divResults">
                &nbsp;
            </div>
        </div>

При вызове мой файл Results.php просто проверяет документ на наличие таких вещей, как .. if (isset ($ _ POST)['selDepartment']) && ($ _POST ['selDepartment'] == "320 носков") {$ sqlSelect. = $ _POST ['selDepartment'];}

Я также попытался использовать $ _GET вместо$ _POST к rполучить значение, тот же результат .. = \

1 Ответ

0 голосов
/ 19 января 2011

Кажется, что вы никогда не отправляете никаких параметров на страницу результатов.Попробуйте добавить это:

xmlhttp.open("GET","Results.php?selGroupBy="+document.getElementById("selGroupBy").value, true); //?q="+str,true);

И получите это на своей странице php с:

$val = $_GET['selGroupBy'];

Ну, я, возможно, не понимаю вашу проблему.

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