2017-08-16 15 views
0

私が見逃していますか?ajaxが正しく動作しない

1.php:

<button id = "testtext">Show</button> 
<script src="jquery-3.1.1.min.js"></script> 
<script src="js.js"></script> 

js.js:

$("#testtext").bind("click", previewNewShortnameFunc); 
function previewNewShortnameFunc() { 
    var lalalatext = "lalala"; 
    var lalalaint = 100; 
    console.log("sent: " + lalalatext + " and " + lalalaint); 
    $.ajax ({ 
     url: "testprint4.php", 
     type: "POST", 
     data : {str: lalalatext, int: lalalaint}, 
     success: function(data) { 
      window.open("testprint4.php"); 
     } 
    }); 
} 

testprint4.php

<?php 
$str = $_POST['str']; 
$int = $_POST['int']; 
echo $str; 
echo $int; 
?> 

は、私が代わりにlalala100の空白のページを参照してください。私は間違って何をしていますか?

+0

あなたはなぜajaxを使用しているのですかよりも、送信ページにスクリプトをリダイレクトしていますか? –

+0

あなたはちょうどajaxのポストで情報を送信します(それはうまくやっていますが、表示しません)。その後、ウィンドウを開くように頼みますが、内部に情報を送りません。 – MacBooc

+0

コンソールをチェックしましたか?ブラウザ? – Alexan

答えて

0

このコードには、2つの別々のHTTP要求が含まれています。最初にAjaxリクエストを実行してから、ユーザーがリダイレクトされてから同じスクリプトをリクエストするようにリクエストすると、空のページが表示されます。

$.ajax ({ 
    url: "testprint4.php", 
    type: "POST", 
    data : {str: lalalatext, int: lalalaint}, 
    success: function(data) { 

    } 
}); 

この部分は、提供されたデータを使用してスクリプトをPOSTとしてリクエストします。 応答が受信されると、success-propertyとリンクされたコールバックのdataで利用可能です。要求はその後終了する。代わりに、あなたの予想されるコンテンツに応じて処理の

あなたは、再び任意の引数O/W GETリクエストを使用して、この時間を同じスクリプトを要求するため、ブラウザの新しいウィンドウを開くために

window.open("testprint4.php"); 

を使用しています。したがって、空白のページが表示されます。

+0

Ohhhh ...ありがとうございます! – nhpmi

0

これは機能しません。 jQuery Ajaxはこの呼び出しを非同期に行います。したがって、window.openはajax呼び出しで渡されたデータなしでtestprint4.phpを要求します。目的の結果を確認するには、window.open('testprin4.php')console.log(data)に置き換えます。

関連する問題