Php Javascript-link、ajax、jquery、cursor是一个文本编辑器,而不是一只手/手指,即使代码工作正常,它也总是返回错误结果

Php Javascript-link、ajax、jquery、cursor是一个文本编辑器,而不是一只手/手指,即使代码工作正常,它也总是返回错误结果,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,现在这真的让人困惑了。。。在不离开页面的情况下更新mysql数据库。。。。我有3位代码。head标签中的javascript、body中的action按钮以及要在另一个页面上执行的代码。以下是三个部分: <script type="text/javascript" src="jquery-1.4.2.js"></script> <script type="text/javascript"> function addItemToUsersList(itemId

现在这真的让人困惑了。。。在不离开页面的情况下更新mysql数据库。。。。我有3位代码。head标签中的javascript、body中的action按钮以及要在另一个页面上执行的代码。以下是三个部分:

<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript">

function addItemToUsersList(itemId)
{
  $.ajax({
      'url': 'member-bucketadd-exec.php', 
       'type': 'GET',
      'dataType': 'json', 
      'data': {itemid: itemId}, 
       'success': function(data) 
       {
           if(data.status)
           {
               if(data.added)
                {
                        $("span#success"+itemId).attr("innerHTML","Item added to your personal list");
                        alert("Item added to your list!");

                 }
                 else
                 {
                        $("span#success"+itemId).attr("innerHTML","This item is already on your list");
                        alert("This item is already on your list!");

                }
            }
       },
       beforeSend: function() 
         {
               $("span#success"+itemId).attr("innerHTML","Adding item to your bucketlist...");

         }
          ,'error': function(data) 
          {
          // what happens if the request fails.
            $("span#success"+itemId).attr("innerHTML","An error occureed");
            alert("On your list!");
        }
});
                  }
     </script>

函数AddItemToUserList(itemId)
{
$.ajax({
'url':'member bucketadd exec.php',
'type':'GET',
“数据类型”:“json”,
'data':{itemid:itemid},
“成功”:函数(数据)
{
if(数据状态)
{
如果(添加数据)
{
$(“span#success”+itemId).attr(“innerHTML”,“添加到个人列表中的项目”);
警报(“已添加到列表中的项目!”);
}
其他的
{
$(“span#success”+itemId).attr(“innerHTML”,“此项已在您的列表中”);
警报(“此项目已在您的列表中!”);
}
}
},
beforeSend:function()
{
$(“span#success”+itemId).attr(“innerHTML”,“将项目添加到bucketlist…”);
}
,“错误”:函数(数据)
{
//如果请求失败会发生什么。
$(“span#success”+itemId).attr(“innerHTML”,“发生错误”);
警惕(“在你的名单上!”);
}
});
}
动作按钮

   <a onclick="addItemToUsersList(<?php echo $itemid ; ?>)">Add<img src='images/plus-green.png' /> </a>
查看php手册中的代码

   $bucketlist = mysql_fetch_array($bucketlist) 

将为FALSE,没有行。

手/手指不会出现。
因为它没有定义为默认情况下为没有href属性的锚显示。只需将
href=“#”
添加到您的锚点,或者将
光标:指针
样式分配到您的锚点,它就会指向您的锚点

返回错误结果
正如Thau指出的,在ajax请求处理代码中,在查询中使用了两个变量
$\u GET['userid']
$\u GET['itemid']
,但在请求中只传递itemid。这就是错误的原因吗?你发现了吗?

a)检查你的.ajax请求:

    <script type="text/javascript" src="./jquery-1.4.2.min.js"></script> 
    <script type="text/javascript"> 

    function addItemToUsersList(itemId) { 
      $.ajax({ 
           'url': 'http://localhost/test/add_member.php',  /*test6ed in my PC*/
           'type': 'GET',   'dataType': 'json',  
           'data': {itemid: itemid, userid: 1},            /*Added itemid, userid */

            /*Params in 'success function*/
           'success': function(data, textStatus, XMLHttpRequest){ 
            if(data.status) { 
              if(data.added) $("#success").attr("innerHTML","Item added"); 
              else $("#success").attr("innerHTML","Already on your list"); 
            } 
           }, 
           beforeSend: function(XMLHttpRequest){ 
               $("#success").attr("innerHTML","Adding item ..."); 
         },
         'error': function(XMLHttpRequest, textStatus, errorThrown) { 
                $("#success").attr("innerHTML","An error occureed"); 
                alert("On your list!"); 
            } 
    }); 
} 
     </script>

    <a href="javascript:addItemToUsersList(1)">Add</a>
    <span id="success"></span>
为避免
href=“#”
导致页面跳转到顶部,您的
onclick
函数需要返回
false
。这会告诉浏览器不要继续执行标准href操作。您可以通过几种方式来实现这一点,包括添加
returnfalse
addItemToUserList()
的末尾,甚至直接在
onclick
代码中,如下所示:

onclick="addItemToUsersList(<?php echo $itemid ; ?>); return false;"
onclick=“addItemToUserList();返回false;”

你好,Dan,因为“在您的列表上!”正在发出警报,所以错误条件正在满足。它实际上并不意味着该项是否在用户列表中。要调试,请将
echo放在“此处”;打印(bucketlist);退出
after
$bucketlist=mysql\u fetch\u数组($bucketlist)
并检查firebug控制台下的响应部分,了解ajax请求谢谢您的回复!(还有其他人!)。。。params=itemid25。响应部分为空。正如Thau在代码中指出的那样,我在a href链接后添加了span id success,并再次检查了响应,这就是我得到的。。。。这里的数组([0]=>284[memberbucketid]=>284[1]=>1[userid]=>1[2]=>25[bucketid]=>25[3]=>0[complete]=>0)看起来都是正确的。memberbucketid只是该表的id列,因此284很好,userid 1和bucketid 25以及完整的0都是正确的。我认为这不是问题。href=“#”工作得很好!通过引用会话用户名……$user\u data=“”.$\u会话['username']”,从数据库中获取用户ID$fetch_users_data=mysql_fetch_对象(mysql_查询(“从
members
WHERE
username
='“$user_data.””)或死(mysql_error())$userid=“”.$fetch_users_data->userid。“”;啊,a href=“#”使页面跳转到顶部,这正是我试图从上面开始的,lol.may你可以将你的文件发送给Dan测试。
$userid   = $_GET['userid' ] ? $_GET['userid']: 0 ;
$bucketid = $_GET['itemid']  ? $_GET['itemid']: 0 ;

if(!$bucketid || !$userid ) 
     echo json_encode( array("status" => false, "added" => false)); 

$sql =  "SELECT * FROM membersbuckets where userid = $userid AND bucketid = $bucketid";
$bucketlist = mysql_query( $sql ) or die(mysql_error());   

$bucketlist = mysql_fetch_array($bucketlist) ; //return FALSE in no rows 

if($bucketlist){ 
    $insert_sql = "INSERT INTO 
                        membersbuckets 
                                 (memberbucketid, userid, bucketid, complete) 
                          VALUES ('', '$userid', '$bucketid', '0')"  ;

    mysql_query($insert_sql);

    //return with an echo 
    echo json_encode(array("status" => true, "added" => true));
 }else { 
    echo json_encode(array("status" => true, "added" => false)); 
 } 
onclick="addItemToUsersList(<?php echo $itemid ; ?>); return false;"