Я хочу получить некоторые данные из php-скрипта на свою html-страницу. Их массив $UniqueNames имеет значение на стороне сервера, но, похоже, ничего не происходит, когда я использую json_encode на странице html, console.info возвращает пустой массив (BilderID). Какие-либо предложения?
код:
<script>
var BilderID = [];
$(document).ready(function (e) {
$('#SubmitBild').on('click', function () {
var form_data = new FormData();
var ins = document.getElementById('Myfilefield').files.length;
for (var x = 0; x < ins; x++) {
form_data.append("Bilder[]", document.getElementById('Myfilefield').files[x]);
}
$.ajax({
url: 'Includes/Bildhantering.php', // point to server-side PHP script
dataType: 'text', // what to expect back from the PHP script
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function (response) {
$('#msg').html(response); // display success response from
},
error: function (response) {
$('#msg').html(response); // display error response from the PHP script
}
});
BilderID = <?php echo json_encode($UniqueNames); ?>
console.info(BilderID);
});
});
</script>
Php:
$UniqueNames = array();
for($i=0;$i<count($file_array);$i++)
{
if ($file_array[$i]['error']){
echo $phpFileUploadErrors[$file_array[$i]['error']];
} else {
$extensions = array('jpg','png','gif','jpeg');
$file_ext = explode('.',$file_array[$i]['name']);
$file_ext = end($file_ext);
if (!in_array($file_ext, $extensions)){
echo "Invalid file extension!";
} else {
$fileNameNew = uniqid('', true).".".$file_ext;
$UniqueNames[] = $fileNameNew;
move_uploaded_file($file_array[$i]['tmp_name'], 'Bilder/'.$fileNameNew);
echo $phpFileUploadErrors[$file_array[$i]['error']];
}
}
}
@treyBake все еще ничего.
Он не выводит JSON из файла PHP...
Если вы микшируете серверную часть с интерфейсом/DOM, это не будет работать так, как вы это настроили.
о, подождите ... почему вы повторяете переменную PHP в своем скрипте jquery? используйте ответ..



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Решение состояло в том, чтобы удалить спецификатор типа данных, вывести массив в php и получить его внутри метода успеха:
$.ajax({
url: 'Includes/Bildhantering.php', // point to server-side PHP script
//dataType: 'text', // what to expect back from the PHP script
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function (response) {
BilderID = response;
console.info(BilderID);
},
error: function (response) {
console.info("error:");
}
});
я имею в виду, зачем использовать «тип данных», если javascript все равно это понимает?
dataType должен быть установлен в json, а не в текст