我有一个问题,我需要将数据发布为内容类型application/x-www-form-urlencoded.
var inputData = {cId:"444",pageNo:"1",latitude:"49.153236",longitude:"12.040905"};
var data = new FormData();
data.append('data', JSON.stringify(inputData));
this.model.save(data, {
data: data,
processData: false,
cache: false,
contentType: false,
success: function (model, resultData) {
$.get(App.baseUrl + 'templates/all-offers-view.html', function (data) {
template = _.template(data, {
data: resultData
});
that.$el.html(template);
}, 'html');
},
error: function (error) {
console.log("Error");
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
虽然以上在所有其他浏览器中工作正常,但我在IE9中收到以下错误.
SCRIPT5009: 'FormData' is undefined
view.js, line 57 character 9
Run Code Online (Sandbox Code Playgroud)
57号线 var data = new FormData();
我听说FormData()是一个浏览器相关的功能,它与jquery库无关,而在IE中则缺少它.
我使用上述方法的原因是因为我必须以application/x-www-form-urlencoded格式传递数据.
我无法更改服务器端编码(因为它与appstore中的iphone应用程序链接).
我所能做的只是尝试与客户端.
有人有解决方案吗? …
我现在使用alamofire已有一段时间了,但我从未使用过表单数据Post.现在我被卡住了.我有2个参数(电子邮件,密码),不知道如何POST他们到服务器.谁能给我一个例子吗?
今天我遇到了一个有趣的bug,花了很多时间才到达底部.
页面上的表单.在提交时,将捕获数据并new FormData()使用它创建对象.
该对象与脚本一起发送并xhr请求.php,然后脚本返回ok/ error消息.
代码看起来像这样:( 简化版,不需要绒毛)
<form name="frm" id="frm" action="" method="post" onsubmit="save(event, this);" enctype="multipart/form-data">
<input name="name" id="name" type="text" value="..." />
<input name="email" id="email" type="text" value="..." />
<input name="phone" id="phone" type="text" value="..." />
<input name="website" id="website" type="text" value="..." />
<textarea name="details" id="details"></textarea>
<input name="send" type="submit" value="Send" />
</form>
<script type="text/javascript">
function save(e, frm) {
if (document.getElementById('nume').value == '' ||
document.getElementById('email').value == '' ||
document.getElementById('telefon').value == '' ||
document.getElementById('site').value == …Run Code Online (Sandbox Code Playgroud) 我试图将更新的用户详细信息的表单数据发送到后端哪个节点服务器角度为2,但是我无法发送表单数据,服务器响应状态为500,在angularjs我做了类似的事情, 服务文件
update: {
method: 'POST',
params: {
dest1: 'update'
},
transformRequest: angular.identity,
'headers': {
'Content-Type': undefined
}
}
Run Code Online (Sandbox Code Playgroud)
在控制器中
var fd = new FormData();
var user = {
_id: StorageFactory.getUserDetail()._id,
loc: locDetails
};
fd.append('user', angular.toJson(user));
UserService.update(fd).
$promise.then(
function(value) {
console.info(value);
updateUserDetailsInStorage();
},
function(err) {
console.error(err);
}
);
Run Code Online (Sandbox Code Playgroud)
我无法想象如何在角度2中做到这一点,因为angular.toJson,angular.identity和transformrequest功能在角度2中不可用,到目前为止,我已经在角度2中完成了以下操作,
let fd = new FormData();
let user = {
_id: this.appManager.getUserDetail()._id,
loc: locDetails
};
fd.append('user', JSON.stringify(user));
this.userService.update(fd).subscribe((value) => {
console.log(value);
this.updateUserDetailsInStorage();
}, (err) => {
console.error(err);
});
Run Code Online (Sandbox Code Playgroud)
http服务文件
update(body) {
console.log('update', …Run Code Online (Sandbox Code Playgroud) 我是 React Native 的新手,遇到了 FormData 的行为与预期不同的问题。我的代码:
let fileToSend = new FormData();
fileToSend.append('File', {
name: 'file.name',
size: 'file.size',
type: 'file.type',
uri: 'file://',
});
Run Code Online (Sandbox Code Playgroud)
我期望得到这样的东西:
fileToSend = {File: [
name: 'file.name',
size: 'file.size',
type: 'file.type',
uri: 'file://',
]}
Run Code Online (Sandbox Code Playgroud)
但实际上我得到了这个:
fileToSend = [_parts: [
0: [
0: 'File',
1: {
name: 'file.name',
size: 'file.size',
type: 'file.type',
uri: 'file://',
}
]]]
Run Code Online (Sandbox Code Playgroud)
这使得我无法将文件发送到服务器。将非常高兴得到您的帮助。谢谢。
我开发了一个休息服务器,我把它放在localhost中运行,我正在尝试使用JMeter执行测试,发送请求post和gets(取决于被调用的方法).
我已经发送到Rest服务器并在简单的帖子请求中得到JMeter的结果,获取请求,发送带有帖子的文件,并发送带有帖子的Json.
但我不知道如何将Form-UrlEncoded对象发送到服务器.我的Rest服务器消耗了application/x-www-form-urlencoded,我需要发送3个String参数.
有一些方法可以设置MimeType每个参数并执行测试吗?
我正在使用Jmeter 2.7
我通过禁用选项解决了这个问题:
use multipart/form-data for post
Run Code Online (Sandbox Code Playgroud)
并启用:
redirect automatically
Run Code Online (Sandbox Code Playgroud)
代替:
follow redirect
Run Code Online (Sandbox Code Playgroud)
我通常在表"使用请求发送参数"中的参数与每个相应的名称.
我选择2张图片并再次在上传前第二次选择3张图片,前两张图片从输入类型文件中删除,最后3张图片仍在那里.我知道这是输入类型文件的默认行为,它用新选择的文件替换新文件,但我想保留用户在上传之前多次选择的所有文件.这怎么可能?我正在使用ajax和formdata.
我有一个邮递员的问题...
但是,当我尝试使用 raw(json) 中的正文发送相同的请求时,我得到了这个:
我正在尝试通过 Angular 5 将数据发送到 Drupal 8 后端。
谢谢!
我有一个形式的POJO:
@Data
public class BaseRequest {
private String type;
private Map<String, Object> details;
private Map<String, Object> signature;
}
Run Code Online (Sandbox Code Playgroud)
我正在运行一个仅接受内容类型的服务:“ application / x-www-form-urlencoded”。
我已经用Java编写了一个客户端,该客户端使用Spring的RestTemplate进行调用。
public String getInvoice(BaseRequest req, String url) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<BaseRequest> httpEntity = new HttpEntity<BaseRequest>(req, headers);
String response = this.restTemplate.postForObject(url, httpEntity, String.class);
return response;
}
Run Code Online (Sandbox Code Playgroud)
但是,它将引发错误:
org.springframework.web.client.RestClientException: Could not write request: no suitable HttpMessageConverter found for request type [com.x.y.z.BaseRequest] and content type [application/x-www-form-urlencoded]
Run Code Online (Sandbox Code Playgroud)
如果我将内容类型设置为JSON,它将起作用:
headers.setContentType(MediaType.APPLICATION_JSON);
Run Code Online (Sandbox Code Playgroud)
我知道它适用于JSON,因为我已经用JacksonHTTPMessageConverter配置了RestTemplate Bean。因此,我可以轻松地将POJO转换为application / json。但是,我不知道如何使用application / x-www-form-urlencoded做到这一点。
我已经搜索了一段时间,发现的唯一解决方案是编写自己的转换器,将BaseRequest类转换为Spring的MultiValueMap,然后Spring的FormHttpMessageConverter将自动处理它。但我想避免这样做。还有其他解决方法吗?
任何线索将不胜感激。谢谢!
编辑:我的问题不同于 …
我需要从客户端向我的 Node.js 服务器发送 multipart/form-data POST(xliff 文件),然后在 Node.js 中捕获数据并将该 POST 转发到另一个 Java 服务。
我已经使用multer和express-fileupload来解析表单数据流并在 Node.js 中捕获 xliff 的缓冲区,并且两者都给了我文件及其内容作为缓冲区就好了。
但是,我似乎无法在 Node 层中重新创建 FormData 对象以将 POST 转发到 Java 服务。
我继续收到错误消息“连接终止解析多部分数据”或从 Java 服务中根本没有响应。
我还尝试使用该tmp库在本地创建一个临时文件来写入缓冲区,然后尝试FormData('file', fs.createReadStream(<path>))这样做,但这对我来说似乎也不起作用......尽管我不确定我是否做得正确。
doPOST直接从浏览器使用完全相同的请求工作正常,但是一旦我尝试捕获节点层中的调用,然后将 POST 转发到 Java 服务,它就不再适用于我了。
.
const multer = require('multer');
const upload = multer();
router.post('/', upload.any(), (req, res) => {
const { headers, files } = req;
console.log('--------------- files:', files[0]); // object with buffer, etc.
const XMLString = files[0].buffer.toString('utf8'); // …Run Code Online (Sandbox Code Playgroud) form-data ×10
javascript ×3
rest ×2
alamofire ×1
angular ×1
backbone.js ×1
firefox ×1
forms ×1
html ×1
html-input ×1
java ×1
jmeter ×1
jquery ×1
json ×1
mime-types ×1
node.js ×1
pojo ×1
post ×1
postman ×1
react-native ×1
resttemplate ×1
spring ×1
swift2 ×1
web-services ×1