Что я скучаю?
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. Что я делаю неправильно?
Этот код включает в себя два отдельных HTTP-запроса. Сначала вы выполняете Ajax-запрос, получая этот ответ, прежде чем перенаправить пользователя на запрос того же сценария без каких-либо параметров, что приведет к пустой странице.
$.ajax ({
url: "testprint4.php",
type: "POST",
data : {str: lalalatext, int: lalalaint},
success: function(data) {
}
});
Эта часть заставляет браузер запрашивать скрипт с предоставленными данными как POST. Когда ответ получен это доступно в data
обратного вызова, связанного с success
-имущество. Запрос закончен тогда.
Вместо того, чтобы обрабатывать этот ответ с вашим ожидаемым контентом
window.open("testprint4.php");
открыть новое окно браузера для повторного запроса того же скрипта, на этот раз используя GET-запрос без каких-либо аргументов. Поэтому вы увидите пустую страницу.
Это не сработает. jQuery Ajax выполняет этот вызов асинхронно, поэтому window.open будет запрашивать testprint4.php без данных, переданных в вызове ajax. Чтобы увидеть желаемый результат, замените window.open('testprin4.php')
в console.log(data)
,