2011-06-29 11 views
1

jQuery ajaxでフォームを含む別のPHPファイルに変数を渡しています。 Onデータが次のコードを持つために渡されているフォームページ。値が正しく渡されていて、フィールドに正しいエントリが設定されています。私はFirebugレスポンスで非常にこれを行うことができますが、ページはありません。自動的に提出する。私が探しているべきものは、それが自動提出のフォームを妨害しているかどうかです。私がフォームページに直接アクセスすると、私は自動提出の仕事を見ることができます。値を送信しているフォーム自動送信ajaxが機能しない

<?php 
$title = $_POST['title']; 
$wrapper = $_POST['wrapper'];?> 

<form action="test.php" method="post" id="publish"> 
    <input type="text" value="<?php echo $title ?>" name="title"> 
    <textarea name="wrapper"><?php echo $wrapper?></textarea> 
    <input type="submit" value="Submit"> 
</form> 

<script> 
window.onload = function(){ 
document.getElementById('publish').submit(); 
} 
</script> 

Ajaxコードは、私は自動提出見るものから、この

$.ajax({ 
    type: "POST", 
    url: "process.php", 
     data: { 
    title: 'test', 
    wrapper: 'testing123' 
    }, 
    success: function(msg){ 
    alert("Data Saved: " + msg); 
    } 
}); 
+0

[危険ウィルロビンソン](http://en.wikipedia.org/wiki/Cross-site_scripting) – Quentin

答えて

1

のように見えるがしかし、フォームIDが「公開は「publishForm」

にリンクされています"

これはおそらくコードが機能しない原因です。

2

スポットの違い:これを打破するには

getElementById('publishForm') 

id="publish" 
+0

申し訳ありませんが、これはstackoverflowの上のタイプミスです:ちょうどこれを行います。私はそれらをid = formと同じものにします。値は正しく渡されていますが、フォームは自動送信されません。 – Pinkie

+0

オリジナルを使用する代わりにコードを再入力すると、違いが生じます。そうすることでエラーを追加しました。削除した可能性もあります。実際のコードはどのように見えますか? – Quentin

+0

コードは上記のとおりです。私はページ上に何も持っていません。 ajax経由で値を送信している他のページには、値を送信していてフォームのページが値を正しく受信しているので、ここに表示する必要のないajax関数が含まれています。 – Pinkie

0

EDIT

  • SourcePage.php上のあなたのコードは、(私は参考のために、この名前を作った)投稿されましたデータをAJAXリクエストを介してprocess.phpに送る
  • process.phpは "title"を入力します& "wrapper"をHTMLマークアップに入れ、HTMLをいくつかのjavascriptでSourcePage.phpに返します
  • 返されたHTMLの結果の文字列(msg)をSourcePage.phpに表示すると、その文字列のjavascriptが取得されます実行する。

この機能を利用するには、いくつかのことを行う必要があります。

  1. htmlから受信したJavaScriptを解析します。
  2. 解析されたHTMLをSourcePage.phpのマークアップに挿入します。
  3. 解析されたJavaScriptをJavaScriptのeval関数に渡します。

このを行うと process.phpからページを持参し、正常SourcePage.php上のJavaScriptコードを実行する必要があります。

JavaScriptがサーバー上で実行されることを期待していた場合、サーバー(PHPランタイム)がサーバー上のJavaScriptを実行しないため、間違います。おそらくサーバー上のリダイレクトがあなたの目標を達成するでしょう。

オリジナル

これを試してみてください:http://jsfiddle.net/NiceGuy4263/eJLMS/

+0

これは質問とは関係ありません。上記の私の記事で述べたように、自動提出はページに直接アクセスすると機能しますので、これは問題ではなく、ajax経由で値を受け取ったときには機能しません。 – Pinkie

+0

@Pinkie - 私の更新された回答を参照 –

0

をおそらく、あなたは私たちに、呼び出し元コードの代わりに、ハンドラコードを表示する必要があります。あなたが扱っているのは、JSがAJAX呼び出し中に実行されていないことです。PHPページの処理はサーバー側です。

あなたはJSの代わりにPHP Curlを使用してフォームを送信することができますか?おそらくそれは直接ロードされて動作するが、別のページから呼び出されると失敗するという問題に対処するでしょう。

+0

質問を更新し、値を送信しているajaxコードを追加しました。 – Pinkie

0

私が理解する限り、HTMLはAJAXを通じてロードされています。その場合は、ページが既にロードされているため、window.onloadは起動されません(AJAXはカウントされません)。

<script type="text/javascript"> 
    document.getElementById('publish').submit(); 
</script> 
関連する問題