0

我有一个似乎运行良好的应用程序,除了一个我似乎无法弄清楚的小故障。我希望在这里得到一些帮助。

我有一个可以动态添加行的表。有两种添加行的方法,一种是通过复选框加载预先确定的数据,另一种是通过图像向表中添加空白行。

该复选框效果很好,但图像链接仅在第一次有效,而在下一次无效。

这是图像行:

<img src="img/plus.png" width="25" height="25" id="btnAddRow" title="Add New Row" class="idfirst alternativeRow" />

AlternativeRow 是从这里的代码生成的:http ://www.examplet.buss.hk/jquery/table.addrow.php (示例#10,但更复杂),该行是这样的:

$(".alternativeRow").btnAddRow({oddRowCSS:"oddRow",evenRowCSS:"evenRow"});

jquery 代码的“idfirst”块是这样的:

$(document).ready(function(){
$(".idfirst").click(function(){
    result = 0;
    id = 0;
    jQuery.ajax({
        url: 'getItemID.php?q=<?php echo $q; ?>',
        success: function(result) {
            id = result;
            if(result.isOk == false)
                alert(result.message);
        },
        async: false
    });          
    window.location.href='page.php?q=<?php echo $q; ?>&id=<?php echo $id; ?>';     
});
});

我重新加载是因为我希望在 getItemID.php 中创建的新数字能够动态加载。这很重要,因为它也被添加到在新行中创建的链接中。getItemID 中的代码如下:

$q = $_GET['q'];
$description = $_GET['description'];
$rate = $_GET['rate'];
$hours = $_GET['hours'];

$query = "INSERT INTO items (q, description, hours, rate) VALUES ('".$q."','".$description."','".$hours."','".$rate."')";

$results = mysql_query($query) or die(mysql_error());
$nextId = mysql_insert_id();

echo $nextId;

所以我的问题是,当我第一次单击图像链接时,一切正常,我得到了空白行,动态行中的链接正常工作,生活很好。

但是当我第二次按下它时,页面会重新加载,但我没有得到我的新行。它只会返回刷新前的现有行。

我想知道是否有人可以看到我做错了什么并提供任何建议。(是的,我知道其中一些可能不是让它工作的理想方式,但在大多数情况下,它正在按照我需要的方式工作......而且我花了很多时间来完成所有这些工作部分相处)。

提前感谢您的任何建议。

4

1 回答 1

0

我确实设法弄清楚了。

我在 IE 中对此进行了测试,用户都将使用它。我使用的 Firefox 中的相同问题。

我偶然发现了这篇文章http://www.electrictoolbox.com/jquery-json-ajax-caching/,一旦我在 Chrome 中尝试过,结果证明是浏览器问题。所以我实施了以下解决方案:

我添加了

$.ajaxSetup({ cache:false });

在我的脚本顶部,为了更好的衡量,添加了

cache: false,

到我的ajax调用。

现在它在任何地方都很好用。

于 2013-08-08T04:43:59.917 回答