我有一个模式,在打开时将哈希推送到 url example.com/#modal,在浏览器后退按钮单击时,我想识别该事件,以便可以切换模式的状态。关键是,因为我将它与 next.js (服务器端渲染)一起使用,所以我将无法访问 window 对象(如果我错了,请纠正我)。所以我需要一种替代方法来处理浏览器后退按钮的事件。
我试图在ajax调用中发送json对象和文件,如下所示
使用Javascript
$('#btn').on('click', function(){
var file_data = $('#imgFile').prop('files')[0];
var form_data = new FormData();
let jsonObj = {
'label1':'value1'
};
form_data.append('file', file_data);
form_data.append('json', jsonObj);//json object which I am trying to send
$.ajax({
url: 'uploader.php',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function(php_script_response){
console.log(php_script_response);
}
});
});
Run Code Online (Sandbox Code Playgroud)
在PHP中我能够成功检索ajax调用中发送的文件,但我不知道如何访问与该文件一起发送的json对象
PHP
<?php
if ( 0 < $_FILES['file']['error'] ) {
echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else {
$file_ext=strtolower(end(explode('.',$_FILES['file']['name'])));
move_uploaded_file($_FILES['file']['tmp_name'], 'uploadedFiles/1.' . $file_ext);
echo $_POST['json'];
}
Run Code Online (Sandbox Code Playgroud)
请让我知道如何在PHP中检索json对象
我正在从 java 脚本进行 ajax 调用,并且尝试从 php 获取 json 响应,如果我将 dataType 设置为 JSON,则如果未执行成功块,则执行 ajax 错误块,如果我尝试 console.log,则不指定 dataType成功块中的响应我什么也没得到
JS
let CurrentDate = Date();
console.log(CurrentDate);
jsonObject = {
'TrackName' : 'Material Science',
'TrackDesc' : 'Test Text Test Text Test Text Test Text Test Text Test Text Test Text ',
'Timestamp' : CurrentDate
}
console.log(jsonObject);
$.ajax({
type:'post',
url:'../../../../PHP/adminScripts/addNewTrack.php',
contentType: "application/json",
data: {trackDetails:jsonObject},
dataType: "json",
success: function(response) {
console.log('SUCCESS BLOCK');
console.log(response);
},
error: function(response) {
console.log('ERROR BLOCK');
console.log(response);
}
});
Run Code Online (Sandbox Code Playgroud)
PHP
<?php
header('Content-type: application/json');
include('../connection.php'); …Run Code Online (Sandbox Code Playgroud)