JavaScript — 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

Решение

Этот код включает в себя два отдельных HTTP-запроса. Сначала вы выполняете Ajax-запрос, получая этот ответ, прежде чем перенаправить пользователя на запрос того же сценария без каких-либо параметров, что приведет к пустой странице.

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

}
});

Эта часть заставляет браузер запрашивать скрипт с предоставленными данными как POST. Когда ответ получен это доступно в data обратного вызова, связанного с success-имущество. Запрос закончен тогда.

Вместо того, чтобы обрабатывать этот ответ с вашим ожидаемым контентом

window.open("testprint4.php");

открыть новое окно браузера для повторного запроса того же скрипта, на этот раз используя GET-запрос без каких-либо аргументов. Поэтому вы увидите пустую страницу.

0

Другие решения

Это не сработает. jQuery Ajax выполняет этот вызов асинхронно, поэтому window.open будет запрашивать testprint4.php без данных, переданных в вызове ajax. Чтобы увидеть желаемый результат, замените window.open('testprin4.php') в console.log(data),

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector