如果使用<a>, Javascript不会向处理程序提交数据

javascript does not submit data to handler if using <a>

本文关键字:处理 程序 数据 提交 如果 Javascript      更新时间:2023-09-26

我试图使用以下脚本提交一些数据到c#处理程序,当用户点击一个链接

 <script type="text/javascript">
function myfunc(clicked_id) {
 var params = "{'orderid':'" + clicked_id + "'}";
  var form = document.createElement("form");
  form.setAttribute("method", "post");
  form.setAttribute("action", "Handler.ashx");
  // for (var key in params) {
    if (params.hasOwnProperty) {
        var hiddenField = document.createElement("input");
        hiddenField.setAttribute("type", "hidden");
        hiddenField.setAttribute("name", "orderid");
        hiddenField.setAttribute("value", params);
        form.appendChild(hiddenField);
       alert(form.outerHTML.toString());
    }
    //   }
    document.body.appendChild(form);
   form.submit();
    //document.body.removeChild(form);
}

下面的工作正常,但由于某些原因链接不工作。

 <label id="test" ><a href="" onclick="myfunc(this.id)" id="11677113">test</a> </label>
 <input type="button" onclick="myfunc(this.id)" id="11677110" value="test" />

基本上,我想通过javascript调用一个方法来取消订单(尝试使用ajax,也没有工作)有人能帮忙吗?我使用的模板网站从VS2012在Razor v2

将此myfunc(this.id)粘贴到href属性中,如下所示:

<a href="javascript:myfunc(this.id)" id="11677113">test</a>

当前,空的href属性取消了onclick,因为点击它会使页面重新加载

href=""很可能是指当前的URL,所以页面实际上正在卸载。您可以使用href="#"或使用JavaScript绑定事件处理程序,并防止默认行为:

//so so
onclick="myfunc(this.id); return false;"
//best
document.getElementById('11677113').addEventListener('click', function (e) {
    myfunc(this.id);
    e.preventDefault();
});

锚标记必须具有href值才能成为链接,否则它将变成书签。

href属性中添加一些内容,并在onclick中添加return,以便您可以停止标准操作:

<a href="#" onclick="return myfunc(this.id)" id="11677113">test</a>

停止标准动作,从myfunc函数返回false