我想使用jQuery $.ajax()
发送到PHP的二进制数据,但我的代码不起作用。我希望有人能帮助我一点点。从jQuery ajax发送二进制数据到PHP
我的情况:一开始,我不必处理二进制数据,我有一个AJAX调用,它工作得很好。
$.ajax({
dataType: 'json'
, type: 'POST'
, data: {foo:bar}
, url: // url to send to ...
...
});
在PHP中,我使用$foo = $_POST['foo'];
再后来就检索到的数据,有必要增加数据的大小送出。 JSON太大了,我不得不寻找一个压缩lib /方法。我选择pako将json字符串压缩成Uint8数组。 (如果你认为这是一个更好的办法来压缩通过AJAX发出JSON之前,请指教数据,谢谢。)
我的代码变成了:
var dataStr = JSON.stringify(jsonData);
var pako = window.pako;
var binData = pako.deflate(unescape(encodeURIComponent(dataStr))); // dataStr is now Uint8 array
$.ajax({
....
, data:{binary:binData, foo:bar...} // and other data
, contentType: false
, processData: false
});
我不知道是否是因为的二进制格式,但我无法检索PHP端的数据了。 我已经试过检查:
$_POST
$HTTP_RAW_POST_DATA
file_get_contents('php://input')
但我什么也看不到相关(或者可能是我只是不知道如何var_dump
/print_r
调试内容$HTTP_RAW_POST_DATA
和file_get_contents('php://input')
?我不知道)。
我失去了一些东西在这里?真正感谢您的帮助。
读它这是关键,'过程数据:FALSE'和你正在做它。 –