2

これが私のコードです。

<script type="text/javascript">
function submitform()
{
$.post("handlers/request.php");

}                       
</script>

<form action="handlers/request.php" method="post" data-ajax="false" id="request">
<a href="javascript: submitform()">
<input type="hidden" name="url" value="http://google.com" />
</a>
</form>

別のPHPファイル(handers / request.php)には、次のような単純なものがあります。

$url = $_POST['url'];

これを拾っていません。なぜだめですか?

4

2 に答える 2

2

実際にはデータを通過させていません。

$.post("handlers/request.php", { url: $("[name='url']").val() }, function(data){
  console.log( data );
});

2番目のパラメーターに注意してください。これは、サーバー側のPHPスクリプトに値を引き継ぐオブジェクトです。urlキーはサーバー$_POST['url']側になり、[name='url']フォーム入力からの値が含まれます。

さらに、この機能をアンカークリックにバインドするときは、次のことを避けてください。

<a href="javascript: submitform()">

代わりに、次の線に沿ってもっと何かを行ってください。

<a class="submit" href="enablejs.html">Submit</a>

次に、JavaScript内で:

$(function(){
  $("form#request").on("click", "a.submit", function(e){
    e.preventDefault();
    $.post("handlers/request.php", { url: $("[name='url']").val() }, function(data){
      console.log( data );
    });
  });
});

JavaScriptをHTMLから除外することは常に良いことです。

于 2012-05-20T06:59:49.697 に答える
0

単純なレベルでは、次のことを行う必要があります。

  • 一部のデータをAjaxページに渡しますが、コードでは渡しません。
  • データが渡されたらどうするかを決定します。

$.postの構文は次のようになります。

jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

したがって、次のようになります。

$.post("test.php", { name: "John", time: "2pm" } );

単純なJavaScript変数を渡す、または:

$.post("test.php", $("#request").serialize());

あなたのように、IDが「request」のフォーム全体を渡します。test.phpページがコードを返す場合は、コールバック関数を指定する必要があります。

その上、HTMLの実装はやや面倒です。Aタグに隠し入力を入れても意味がありません。次のようなものを試してください:

<form action="handlers/request.php" method="post" data-ajax="false" id="request">
    <input type="hidden" name="url" value="http://google.com" />
    <input type="button" onclick="submitform();" value="Submit" />
</form>

function submitform() {
    $.post("handlers/request.php", $("#request").serialize());
}
于 2012-05-20T07:49:57.153 に答える