返回脚本无法在XMLHttpRequest.responseText中工作

时间:2011-11-17 12:23:21

标签: php javascript ajax xmlhttprequest

我有两个页面使用相同的脚本。它正在处理其中一个,但它不在页面上工作,它通过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 :(得分:0)

我认为这是必须打开新模态窗口的链接:

<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将执行您在javascript文件中定义的函数doAjaxdoAjax会执行ajaxRequest.open('get', '../coding/showti.php?type=hinvoice' + querystring, true)之类的操作,就像您对初始ajax请求所做的那样 您可能希望看一下像jQuery或Mootools这样的框架来进一步实现它,因为它们使得处理ajax请求变得更加容易和直接。