我需要将JSON(我可以将其字符串化)发送到服务器并在用户端检索生成的JSON,而不使用JQuery.
如果我应该使用GET,我如何将JSON作为参数传递?是否存在太长的风险?
如果我应该使用POST,如何onload在GET中设置函数的等价物?
或者我应该使用不同的方法?
备注
这个问题不是关于发送一个简单的AJAX.它不应该作为重复关闭.
我正在尝试实现简单的xhr抽象,并在尝试设置POST的标头时收到此警告.我认为它可能与在单独的js文件中设置标题有关,因为当我<script>在.html文件中的标记中设置它时,它工作正常.POST请求工作正常,但我收到此警告,我很好奇为什么.我得到这样的警告两个content-length和connection头,但仅在WebKit的浏览器(Chrome浏览器5测试版和Safari 4).在Firefox中,我没有收到任何警告,Content-Length标头设置为正确的值,但Connection设置为keep-alive而不是close,这让我觉得它也忽略了我的setRequestHeader调用并生成它自己的.我没有在IE中试过这段代码.这是标记和代码:
test.html:
<!DOCTYPE html>
<html>
<head>
<script src="jsfile.js"></script>
<script>
var request = new Xhr('POST', 'script.php', true, 'data=somedata', function(data) {
console.log(data.text);
});
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
jsfile.js:
function Xhr(method, url, async, data, callback) {
var x;
if(window.XMLHttpRequest) {
x = new XMLHttpRequest();
x.open(method, url, async);
x.onreadystatechange = function() {
if(x.readyState === 4) {
if(x.status === 200) {
var data = {
text: x.responseText,
xml: x.responseXML
};
callback.call(this, data);
}
}
} …Run Code Online (Sandbox Code Playgroud) 当前设置
我有一个像这样的HTML表单.
<form id="demo-form" action="POST" method="post-handler.php">
<input type="text" name="name" value="previousValue"/>
<button type="submit" name="action" value="dosomething">Update</button>
</form>
Run Code Online (Sandbox Code Playgroud)
我可能在页面上有很多这些表单.
我的问题
如何异步提交此表单而不是重定向或刷新页面?我知道怎么用XMLHttpRequest.我遇到的问题是在javascript中从HTML中检索数据然后放入一个post请求字符串.这是我目前用于zXMLHttpRequest`的方法.
function getHttpRequest() {
var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlhttp;
}
function demoRequest() {
var request = getHttpRequest();
request.onreadystatechange=function() {
if (request.readyState == 4 && request.status == 200) {
console.log("Response Received");
}
}
request.open("POST","post-handler.php",true);
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.send("action=dosomething");
}
Run Code Online (Sandbox Code Playgroud)
例如,假设在demoRequest()单击表单的提交按钮时调用了javascript方法,如何从此方法访问表单的值,然后将其添加到XMLHttpRequest …
在纯Javascript中是否有任何AJAX Post的实现(可能使用xmlhttprequest)?
例如,如果我有这样的表单:
<form action="request.php" id="register_form">
<input type="text" name="first_name" placeholder="First Name">
<input type="text" name="last_name" placeholder="LastName">
<input type="submit" value="submit_now">
</form>
Run Code Online (Sandbox Code Playgroud)
这是我在jQuery中实现的AJAX
$('#register_form').submit(function(e) {
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
/* start ajax submission process */
$.ajax({
url: formURL,
type: "POST",
data: postData,
success: function(data, textStatus, jqXHR) {
alert('Success!');
},
error: function(jqXHR, textStatus, errorThrown) {
alert('Error occurred!');
}
});
e.preventDefault(); //STOP default action
/* ends ajax submission process */
});
Run Code Online (Sandbox Code Playgroud)
我可以不使用jQuery 做同样的事情吗?如果可能,我如何将上述jQuery代码实现为纯/纯Javascript代码?
如何将参数传递给XMLHttpRequest对象?
function setGUID(aGUID) {
var xhReq = new XMLHttpRequest();
xhReq.open("POST", "ClientService.svc/REST/SetAGUID" , false);
xhReq.send(null);
var serverResponse = JSON.parse(xhReq.responseText);
alert(serverResponse);
return serverResponse;
}
Run Code Online (Sandbox Code Playgroud)
我需要使用javascript而不是jquery,在jquery中我得到它使用这个代码,但似乎无法用直接的javascript方式弄清楚它..
function setGUID(aGUID) {
var applicationData = null;
$.ajax({
type: "POST",
url: "ClientService.svc/REST/SetAGUID",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ aGUID: aGUID }),
dataType: "json",
async: false,
success: function (msg) {
applicationData = msg;
},
error: function (xhr, status, error) { ); }
});
return applicationData;
}
Run Code Online (Sandbox Code Playgroud) 我尝试使用 XMLHttpRequest 将 POST 数据发送到 PHP 文件。URL 是正确的,但 PHP 无法捕获任何发送的数据,只能返回空响应。
我在客户端使用纯 JavaScript,在服务器上使用 PHP 7.1
我的PHP:
$data->msg = 'PHP is working';
$data->user = $_POST['user'];
$data->pass = $_POST['pass'];
echo json_encode($data);
Run Code Online (Sandbox Code Playgroud)
我的 JavaScript:
var data = { 'user': 'myUser', 'pass': 'myPass' };
var xhr = new XMLHttpRequest();
xhr.open('POST', 'myurl', true);
xhr.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
var res = JSON.parse(xhr.response);
console.log(res);
}
};
xhr.send(data);
// Expected output: {msg: "PHP is working", user: …Run Code Online (Sandbox Code Playgroud) 是否可以使用POST将数据发送到服务器?
即)我想将POST数据发送到url:
http://www.a.com/b?cmd=tt
Run Code Online (Sandbox Code Playgroud)
使用POST数据:
a=1
b=2
Run Code Online (Sandbox Code Playgroud)
它可行吗?怎么样?
我试图使用以下代码将zip文件从asp.net web api返回给客户端:
private byte[] CreateZip(string data)
{
using (var ms = new MemoryStream())
{
using (var ar = new ZipArchive(ms, ZipArchiveMode.Create, true))
{
var file = archive.CreateEntry("file.html");
using (var entryStream = file.Open())
using (var sw = new StreamWriter(entryStream))
{
sw .Write(value);
}
}
return memoryStream.ToArray();
}
}
public HttpResponseMessage Post([FromBody] string data)
{
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(CreateZip(data));
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip, application/octet-stream");
return result;
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我收到以下错误:
ExceptionMessage":"值'application/zip,application/octet-stream'的格式无效."
这是JS代码:
$.ajax({
type: "POST",
url: url,
data: …Run Code Online (Sandbox Code Playgroud) 使用 Rest 服务时,我们可以在 Google Chrome 中发送 POST HTTP 请求吗?我尝试了几个扩展,但我需要直接从 Chrome 浏览器
javascript ×7
ajax ×5
post ×4
firebug ×2
http ×2
json ×2
c# ×1
forms ×1
get ×1
html ×1
http-post ×1
jquery ×1
memorystream ×1
php ×1
rest ×1
webmethods ×1
ziparchive ×1