【问题标题】:Why is my PHP AJAX onclick function not always triggering?为什么我的 PHP AJAX onclick 函数并不总是触发?
【发布时间】:2019-01-16 05:50:15
【问题描述】:

我在使用 PHP AJAX 中的 A HTML 元素 onclick 函数时遇到问题。

foreach(array_unique($_SESSION["items"]) as $item) {

     echo '<a onclick="minItem('. $item .');" class="btn btn-outline-success my-2 my-sm-0 ">-</a>
}

此代码表示从数组中删除 1 个元素。

我的 Javascript 中的代码如下:

function minItem(item) 
{               
    var minus = item;

    $.ajax({ 
    type: "POST", 
    url: "testing.php", 
    data: {'minus': minus},
    success: function(result){ 
      $("#cart_overview").html(result);
    }
  });
}

对于数组中的某些元素,这是有效的,例如当$item = 122 例如。但是$item = R323的时候,AJAX函数好像没有被调用。

我一直在寻找解决方案,但找不到任何解决方案。非常感谢所有帮助。

【问题讨论】:

  • 如果它是一个字符串,你需要引用变量 - 即cho '&lt;a onclick="minItem(\''. $item .'\');" ...等
  • 字符串似乎是问题所在,如果它是一个数字 javascript_function(111) 将起作用,但 R323 是一个字符串,那么 javascript_function(R323) 不应该起作用,以及您生成值的方式JS 函数会这样写,我建议你把所有的值放在简单的引号 '&lt;a onclick="minItem(\'''. $item .'\');" 或者如果你喜欢的话
  • @FranciscoHahn 感谢您的建议,您的代码给了我一个错误:解析错误:语法错误,意外的“.$item”。 (T_CONSTANT_ENCAPSED_STRING),期待 ',' 或 ';'
  • 我用手机写的,你得到的答案应该可以解决问题
  • :-) 非常好 - 祝你好运

标签: javascript php html ajax onclick


【解决方案1】:

您的a 标记需要href 属性,如果参数是字符串,您需要引用作为参数传递给minItem 的任何变量 - 可能是这样的:

foreach( array_unique( $_SESSION["items"] ) as $item ) {
    printf('<a href="#" class="btn btn-outline-success my-2 my-sm-0" onclick="minItem(\'%s\')">-</a>', $item );
}

【讨论】:

    【解决方案2】:

    由于 onclick 调用可以保存字符串,因此您需要将传递的参数用引号括起来,例如:

     echo "<a onclick='minItem(\"$item\");' class='btn btn-outline-success my-2 my-sm-0 '>-</a>";
    

    【讨论】:

    • 您好,感谢您的回复。它给了我一个错误:无效或意外的令牌
    • 第一个解决方案不起作用。 HTML 不理解属性内的转义引号。
    • 是的,@Barmar,第二个应该可以工作...(更新)
    猜你喜欢
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2016-11-11
    • 2011-11-25
    • 1970-01-01
    • 2018-03-05
    相关资源
    最近更新 更多