Возвращаемый скрипт не работает в XMLHttpRequest.responseText - PullRequest
0 голосов
/ 17 ноября 2011

У меня две страницы с одинаковым сценарием. Он работает на одном из них, но НЕ работает на странице, где он отображается через responseText.

Моя HTML-страница PHP, на которой я использую XMLHTTPRequest

var ajaxRequest;
try
{
    ajaxRequest = new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer Browsers
try
{
    ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
    try
    {
        ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {
        // Something went wrong
        alert("Your browser broke!");
        return false;
    }
}
}
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4)
{
    document.getElementById("ajaxresult").innerHTML=ajaxRequest.responseText;
    return false;
}
}
var queryString = "?atype=" + stype + "&amode=" + smode + "&afrom="+sfrom+"&ato="+sto;
ajaxRequest.open("GET", "ajax/get_act_statement.php" + queryString, true);
ajaxRequest.send(null);
return false;    

Мой текст ответа работал нормально, я отображал номера счетов с деталями, имел ссылку на просмотр счета, нажимая на ссылку счета, мне нужно было открыть модальное поле, чтобы показать детали счета. Проблема в том, что это не модальное окно ОТКРЫТИЕ, а переход на другую страницу и отображение счетов.

Я проверил скрипт модального окна на другой странице, не используя ResponseText. Работает нормально.

Вот код возврата из моего php-файла

$display_string = "<h4>Result</h4><div class='category-desc clearfix'></div><table class='category'><thead><tr><th width='12%' nowrap='nowrap'>Invoice No.</th><th width='13%' nowrap='nowrap'>Date</th><th width='15%' nowrap='nowrap'>Payment Mode</th><th width='25%' nowrap='nowrap'>Despatched By</th><th width='20%' nowrap='nowrap'>Destination</th><th width='5%' nowrap='nowrap'>Amount</th><th width='10%' nowrap='nowrap'></th></tr></thead><tbody>";
        $i=1;
        while($ac_getting_result_payment_purchase = mysql_fetch_array($purchase_query))
        {
            if($i == 1)
            {
                $display_string = $display_string."<tr class='cat-list-row1'>";
            }
            else
            {
                $display_string = $display_string."<tr class='cat-list-row2'>";
                $i = 0;
            }
            $display_string = $display_string."<td width='12%' nowrap='nowrap'>".$ac_getting_result_payment_purchase['TrnsNo']."</td>";
            $display_string = $display_string."<td width='13%' nowrap='nowrap'>".$ac_getting_result_payment_purchase['TDate']."</td>";
            $display_string = $display_string."<td width='15%' nowrap='nowrap'>".$ac_getting_result_payment_purchase['PaymentMode']."</td>";
            $display_string = $display_string."<td width='25%' nowrap='nowrap'>".$ac_getting_result_payment_purchase['Despatchedby']."</td>";
            $display_string = $display_string."<td width='20%' nowrap='nowrap'>".$ac_getting_result_payment_purchase['Destination']."</td>";
            $display_string = $display_string."<td width='5%' nowrap='nowrap' align='right'>".$ac_getting_result_payment_purchase['Amount']."</td>";
            $display_string = $display_string."<td width='10%' nowrap='nowrap' align='right'><a class='modal' href='../coding/showti.php?type=hinvoice&id=".$ac_getting_result_payment_purchase['TrnsNo']."'>View Invoice</a></td></tr>";
            $i++;
        }
        mysql_close($con);
        $display_string = $display_string."</tbody></table>";
echo $display_string;

Заранее спасибо:)

1 Ответ

0 голосов
/ 17 ноября 2011

Я предполагаю, что это ссылка, которая должна открыть новое модальное окно:

<a class='modal' href='../coding/showti.php?type=hinvoice&id=".$ac_getting_result_payment_purchase['TrnsNo']."'>View Invoice</a>

Когда это так, это «простая» ссылка. Так что откроется новая страница. Вы должны «ajaxify» его, чтобы открыть модальное окно. Это означает присоединение слушателя событий к нему в вашем javascript, поэтому, когда вы щелкнете по нему, он выполнит запрос ajax и вернет ответ в вашем модальном окне div. Вы можете сделать это встроенным, вот так:

<a class="modal" href="#" onclick="doAjax();" />

Хеш (#) обычно используется, чтобы запретить браузеру открывать новую страницу. onclick выполнит функцию doAjax, которую вы определили в своем файле JavaScript. doAjax будет делать что-то вроде ajaxRequest.open('get', '../coding/showti.php?type=hinvoice' + querystring, true) и т. Д. Так же, как вы делали с вашим первоначальным запросом ajax.
Возможно, вы захотите взглянуть на фреймворк, такой как jQuery или Mootools, чтобы реализовать это дальше, потому что они делают обработку ajax-запроса намного проще и понятнее.

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