0

button.onclick()イベントによって呼び出される JavaScript 関数を作成しましたが、関数が呼び出されません。代わりに、フォーム アクションが実行されます。

HTML:

<form id = "Documents" action="Uploaded.php">
<input type="submit" id="Remove1" name="Remove[1]" value="Remove first" onclick="return Remove('Remove1');">
<input type="submit" id="Remove2" name="Remove[2]" value="Remove second" onclick=" return Remove('Remove2');">
</form>

更新された JavaScript:

function Remove(currentDoc)
{
if (window.XMLHttpRequest)
      {
  xmlhttp=new XMLHttpRequest();
  }
else
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("Removemsg").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","functions/remove.php?Doc="+currentDoc,true);
xmlhttp.send();

    return false;
}

uploaded.php私のではなく呼び出しますremove.php。しかし、onclick呼び出す関数を既に定義していますremove.php。親切なアドバイス。

4

6 に答える 6

3

フォーム送信を防止するためのreturn false;ステートメントを追加します。function remove()

また、あなたonclick="Remove()"はそうあるべきですonclick="return Remove();"

あなたのJSコードもエラーです

function Remove(currentDoc)
{
if (window.XMLHttpRequest)
  xmlhttp=new XMLHttpRequest();
else
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("Removemsg").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","functions/remove.php?Doc="+currentDoc,true);
xmlhttp.send();

    return false;
}
于 2012-07-12T12:34:47.423 に答える
1

フォームの送信を防ぐため<input type="button" />に代わりに使用する<input type="submit" />

于 2012-07-12T12:37:13.560 に答える
1

送信ボタンをクリックすると、フォームが送信されるのはごく自然なことです。これを防ぎたい場合は、イベント ハンドラで false を返す必要があります。remove 関数の最後に false を返すだけでは不十分であることに注意してください。次のように記述する必要があります。

<input type="submit" id="Remove1" name="Remove[1]" value="Remove first" onclick="return Remove('Remove1')">

remove 関数は false を返す必要があります。また、ajax コーディングにセマンティック エラーがあることにも注意してください。xmlhttp オブジェクトの open() 関数を呼び出した後に onReadyStateChange を設定する必要があります。詳細はこちら

于 2012-07-12T12:45:13.953 に答える
1

<input type="submit" ... />を使用してボタンを生成する代わりに、<button>タグ ( MDN docu )を使用することもできます

<button type="button" id="Remove1" name="Remove[1]" onclick="Remove('Remove1')">Remove first</button>

これにより、ボタンが生成されます。設定により、フォームの送信をトリガーするtype="button"デフォルト ( ) を防止します。type="submit"

于 2012-07-12T12:39:23.340 に答える
1

これは送信ボタンであるため、デフォルトでアクション属性の URL にフォームを送信します。

これを防ぐには、関数の最後で false を返す必要があります。

function Remove(currentDoc)
{
if (window.XMLHttpRequest)
  xmlhttp=new XMLHttpRequest();
  }
else
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("Removemsg").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","functions/remove.php?Doc="+currentDoc,true);
xmlhttp.send();

return false;
}
于 2012-07-12T12:35:02.610 に答える
-3

JavaScript を使用している場合は、<form>.

于 2012-07-12T12:39:14.830 に答える