JQuery Ajax Post有时会起作用

时间:2014-02-13 16:02:24

标签: php jquery ajax

我遇到了JQuery和Ajax的问题​​。有时候我的代码运行得很好,有时它不会。其他时候我需要按一下向下箭头才能使向上箭头工作,这很奇怪......

在IE或Firefox中,缺乏响应的情况比在Chrome中更少发生。

有问题的网站在这里: http://www.dungeoncrawler.com/kickstarter_2013/calculator/

如果您需要登录,请尝试: ID:webmaster@geoste.ca 通过:123456789

以下是我的代码示例:

Javascript JQuery函数:首先调用chnQuantUp或chnQuantDn,然后将数据传递给执行实际JQuery调用的doCrtUpd。

function doCrtUpd(crtID,itmAmt,itmStrID)
{
    // Call AJAX to update cart quantities
    if (crtID)
    {
        $.ajax({
        type: 'POST',
        url: 'inc-kspldgman.php',
        data: {cartordrnum: crtID,itmamt: itmAmt,storeitmkey: itmStrID, doaction: "UPDITM"},
        async: true,
        success: function (d)
            {
                reLoadDivs();
            },
        error: function (d)
            {
                 alert(d);
            }
        });
    }
}

function chnQuantUp(frmEle,frmEleID,crtID,itmStrID)
{
    tmpvar2 = frmEle + frmEleID;
    tmpvar1 = eval("document.frmStrItms."+ tmpvar2 +".value");
    if (isNaN(tmpvar1))
    {
        tmpvar1 = 1;
    }
    else
    {
        tmpvar1 = parseInt(tmpvar1);
        tmpvar1++;
    }
    eval("document.frmStrItms."+ tmpvar2 +".value = " + tmpvar1);
    doCrtUpd(crtID,tmpvar1,itmStrID);
}

function chnQuantDn(frmEle,frmEleID,crtID,itmStrID)
{
    tmpvar2 = frmEle + frmEleID;
    tmpvar1 = eval("document.frmStrItms."+ tmpvar2 +".value");
    if (isNaN(tmpvar1))
    {
        tmpvar1 = 0;
    }
    else
    {
        tmpvar1 = parseInt(tmpvar1);
    }
    tmpvar1--;
    if (tmpvar1 < 0)
    {
        tmpvar1 = 0;
    }
    eval("document.frmStrItms."+ tmpvar2 +".value = " + tmpvar1);
    doCrtUpd(crtID,tmpvar1,itmStrID);
}

我的HTML示例,其中一个商店项目:

<div name="frmEle14" id="frmEle14" class="item" style=" background-image: url(./gallery/calc_ID_84.png);">
  <div class="item_name">GREENKNEE, PPM</div>
      <div class="item_count_5">
          <div align="center">
          <a href="javascript:chnQuantUp('frmeleamt','14','0','38');"><img src="images/calc_arrow_up_lw.jpg" border="0" class="arrow_btn1" /></a><br />
          <input type="text" name="frmeleamt14" id="frmeleamt14" class="count_box" value="0" size="3" maxlength="3" onkeyup="javascript:doManChng('0',document.frmStrItms.frmeleamt14.value,'38','frmeleamt14');" /><br />
          <input type="hidden" name="frmelesku14" id="frmelesku14" value="GVN-DCM-0005-CHAMP-PPM" />
          <input type="hidden" name="frmelesalecode14" id="frmelesalecode14" value="NONE" />
          <input type="hidden" name="frmeleitmkey14" id="frmeleitmkey14" value="38" />
          <input type="hidden" name="frmgvnlinekey14" id="frmgvnlinekey14" value="0" />
          <a href="javascript:chnQuantDn('frmeleamt','14','0','38');"><img src="images/calc_arrow_down_lw.jpg" border="0" class="arrow_btn2" /></a>
          <input type="hidden" name="frmelepicnme14" id="frmelepicnme14" value="calc_ID_84.png" />
          </div>
      </div>
  <div class="item_price">$3.00</div>
  </div>

处理数据库实际添加的PHP代码:

if ($cartordrnum)
{
// Start UPDATE
if ($doaction == "UPDITM")
{
    $rspns = "";
    // Get store item's data that we need, such as price per unit
    $sql = "SELECT item_unitprice,salecode FROM store_items WHERE itemkey = ".$storeitmkey.";";
    $getitmdata1 = mysqli_query($conn,$sql);
    $getitmdata = mysqli_fetch_array($getitmdata1);
    $itemunitprice = $getitmdata['item_unitprice'];
    settype($itemunitprice,"float");
    $salecode = $getitmdata['salecode'];
    settype($salecode,"string");
    $getitmdata = null;
    $getitmdata1 = null;

    // Do new item total if it has not already been calculated via salecode
    if ($itmttl == 0)
    {
        $itmttl = ($itmamt * $itemunitprice);
    }

    $gvnlinekey = 0;
    $dbitmamt = 0;

    $sql = "SELECT lineitmkey, linequant FROM gvn_lineitems WHERE storeitmkey = ".$storeitmkey." AND code_note IS NULL ORDER BY lineitmkey DESC LIMIT 0,1;";
    $chklineitm1 = mysqli_query($conn,$sql);
    if (mysqli_num_rows($chklineitm1))
    {
        $chklineitm = mysqli_fetch_array($chklineitm1);
        $gvnlinekey = $chklineitm['lineitmkey'];
        settype($gvnlinekey,"integer");
        $dbitmamt = $chklineitm['linequant'];
        settype($dbitmamt,"integer");
    }
    $chklineitm = null;

    if ($gvnlinekey)
    {
        if ($itmamt)
        {
            // Check if amounts have changed.
            if ($dbitmamt != $itmamt)
            {
                // We have a change, so do an update.

                // Do DB update
                $sql = "UPDATE gvn_lineitems SET linequant = ".$itmamt.", linesubttl = ".$itmttl.", linettl = ".$itmttl." WHERE lineitmkey = ".$gvnlinekey.";";
                if (mysqli_query($conn,$sql))
                {
                    $rspns = "UPDATED";
                }
            }
        }
        else
        {
            // Delete the lineitem because it has a zero or negative amount
            $sql = "DELETE FROM gvn_lineitems WHERE lineitmkey = ".$gvnlinekey." AND code_note IS NULL;";
            if (!mysqli_query($conn,$sql))
            {
                $rspns = "DELETED1";
            }
        }
    }
    else
    {
        // Insert new line item
        if ($itmamt > 0)
        {
            $sql = "INSERT INTO gvn_lineitems (ordrnumkey,storeitmkey,linequant,linesubttl,linettl) VALUES (".$cartordrnum.",".$storeitmkey.",".$itmamt.",".$itmttl.",".$itmttl.");";
            if (mysqli_query($conn,$sql))
            {
                $rspns = "ADDED";
            }
        }
        else
        {
            // Delete the lineitem because it has a zero or negative amount
            $sql = "DELETE FROM gvn_lineitems WHERE storeitmkey = ".$storeitmkey." AND code_note IS NULL;";
            if(mysqli_query($conn,$sql))
            {
                $rspns = "DELETED2";
            }
        }
    }
    $chklineitm1 = null;
    //echo $rspns;
}

0 个答案:

没有答案