我有两个页面使用相同的脚本。它正在处理其中一个,但它不在页面上工作,它通过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;
提前致谢:)
答案 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文件中定义的函数doAjax
。 doAjax
会执行ajaxRequest.open('get', '../coding/showti.php?type=hinvoice' + querystring, true)
之类的操作,就像您对初始ajax请求所做的那样
您可能希望看一下像jQuery或Mootools这样的框架来进一步实现它,因为它们使得处理ajax请求变得更加容易和直接。