通过ajax发送多个数据
Sending multiple data through ajax
据我所知,我的问题是stackoverflow上多个较小问题的恼人组合,但我无法弄清楚。
我正试图通过ajax发送一个音频文件,这很好,但我也想包括它上传/录制的位置。这是我通过阅读多个类似问题得出的结论:
(不起作用)
function getLocation() {
navigator.geolocation.getCurrentPosition(foundLocation, noLocation);
function foundLocation(position) {
var longitude = position.coords.longitude;
var latitude = position.coords.latitude;
//alert("LAT : "+latitude +", LONG : "+longitude);
return [longitude, latitude];
}
}
function noLocation() {
//alert('Could not find location');
}
function uploadAudio(mp3Data){
var pos = getLocation();
var longitude = pos[0];
var latitude = pos[1];
var reader = new FileReader();
reader.onload = function(event){
var fd = new FormData();
var mp3Name = encodeURIComponent('audio_recording_' + new Date().getTime() + '.mp3');
console.log("mp3name = " + mp3Name);
fd.append('fname', mp3Name);
fd.append('data', event.target.result);
fd.append('longitude', longitude);
fd.append('latitude', latitude);
$.ajax({
type: 'POST',
url: 'upload.php',
data: fd,
processData: false,
contentType: false
}).done(function(data) {
//console.log(data);
log.innerHTML += "'n" + data;
});
};
reader.readAsDataURL(mp3Data);
}
我必须处理数据的php脚本如下:
<?php
if(!is_dir("recordings")){
$res = mkdir("recordings",0777);
}
// pull the raw binary data from the POST array
$data = substr($_POST['data'], strpos($_POST['data'], ",") + 1);
// decode it
$decodedData = base64_decode($data);
// print out the raw data,
//echo ($decodedData);
$filename = 'audio_recording_' . date( 'Y-m-d-H-i-s' ) .'.mp3';
// write the data out to the file
$fp = fopen('recordings/'.$filename, 'wb');
fwrite($fp, $decodedData);
fclose($fp);
?>
我希望能够用类似$latitude=$_POST['longditude']的东西来检索位置;
现在我不知道如何让JS在getLocation()函数中返回多个数据,也不知道如何使ajax正确地发送所有这些数据。任何帮助都将不胜感激!
由于您通过AJAX
以原始格式发送文件,因此无法在消息正文中发送更多数据。因此,您应该在GET (query string)
中发送数据。
客户端:
function uploadAudio(mp3Data){
var pos = getLocation();
var longitude = pos[0];
var latitude = pos[1];
var reader = new FileReader();
reader.onload = function(event){
var fd = new FormData();
var mp3Name = encodeURIComponent('audio_recording_' + new Date().getTime() + '.mp3');
console.log("mp3name = " + mp3Name);
fd.append('fname', mp3Name);
fd.append('data', event.target.result);
var ajax_url = 'upload.php?longitude='+longitude+'&latitude='+latitude;
$.ajax({
type: 'POST',
url: ajax_url,
data: fd,
processData: false,
contentType: false
}).done(function(data) {
//console.log(data);
log.innerHTML += "'n" + data;
});
};
reader.readAsDataURL(mp3Data);
}
服务器端:
$longitude = $_GET['longitude'];
$latitude = $_GET['latitude'];
要获得所有返回值(如果有多个),必须遍历响应数据,否则只会获得一个。
.done(function(data) {
var output = '';
$.each(data,function(index, value) {
output += value
});
}
相关文章:
- Ajax-如何获取数据
- JS验证ajax返回的html中的表单数据
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 使用ajax将数据从一个步骤发送到下一个步骤的3步表单
- node.js请求数据事件未在CORS ajax调用中触发
- React ajax数据集成
- 发送和接收数据?Ajax、Jquery和PHP
- 从返回的数据 ajax post 创建一个变量
- Laravel在成功后附加数据ajax
- Python - 从服务器获取数据 (ajax) - 'str' 对象不是可调用的错误
- 阻止执行数据 ajax 属性
- 表单中的文本框数据-AJAX提交时未传递
- 发送数据ajax php
- 加载更多数据ajax PHP onscroll
- Rails 4数据ajax路由问题
- 将数据ajax传递到每个页面的同一个页面
- 发送图像+数据ajax post到ashx处理程序
- 传递购物车数据…Ajax或PHP Post
- 将键值对作为单独的数据Ajax发布
- 使用数据Ajax发送