天道酬勤,学无止境

发送此 AJAX Post 数据的正确内容类型(Correct content-type for sending this AJAX Post data)

问题

我在使用 ajax post 发送 base64 图像数据时遇到问题我认为我的 Content-Type 值错误,但尝试了application/jsontext/jsonimage/jpeg没有任何成功

Javascript

  function sendFormData(fD)
    {
        var urls = fD.get('urls');
        console.log('urls', urls);

        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/editsongs.update_artwork');
        alert(urls);
        xhr.setRequestHeader("Content-type", "image/jpeg");
        xhr.send(urls);
    }

浏览器控制台显示

["data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxMTEhUTExMWFhUXGRgbGBgXGR0aGRgXHRgYFx4YGxkYHiogGh4lGxgdIjEhJSkrLi4uGh8zODMtNygtLisBCgoKDg0OGhAQGy0lHSUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLf/AABEIANEA8QMBIgACEQEDEQH/xAAcAAACAgMBAQAAAAAAAAAAAAAEBQMGAAECBwj/xABGEAACAQIEBAQDBAUJCAIDAAABAhEDIQAEEjEFIkFREzJhcQaBkRRCobEjUsHh8AcVM2JygsLR8RZDRFNzg5KyJDSzw8T/xAAZAQADAQEBAAAAAAAAAAAAAAABAgMABAX/xAAqEQACAgEDBQACAQQDAAAAAAAAAQIRAxIhMQQTFEFRImGRYnGh8AUjMv/aAAwDAQACEQMRAD8AsoosJt9cSpSdeYKYEXxKlQs4E2kEx6dMWJFBEDr0OPey5nCrR58MalwJUpB1nENbJWthpTyQDG5H5Y0gGqNQOJLLXA7h9K9VypGITSPbD+tSGIFy4mSJx0xz7EXjE7UscacNamW30jAlbLsNxiscqZNwoCK4wDEzJjkLiuoQjGNEYnCY5ZcawkMY5bEkY5GGsUijG1XtjcYPyFAQWMbbdsac9Ks0Y2wQphlwTKLUZg2wAwFmq8m5HYY5HFTRph0VnBI1QDZZgsZGwEnHPmn/ANb+lMcVqLFWRafKMTU+L6bRb88V/LcY+0otQKVmbdcbq1wsSYkgDfc7C3fHIoRlDVIs5tSpFzyXEtcdCdvlhopwp4RSpwvcAf64bj0x5mbSpUjrhdbmicSU1xi08djEWylGRjRGOsC5uodl379sBK2F8HbMAJxUON5lqrQFMA4f1CVU62ke2FaZlWqXgAbepx29MtD1VZzZXaol4RwYKsuAWP4…

Java服务器代码

public String updateArtwork(Request request, Response response)
    {
        System.out.println("Received artwork");

        for(String s:request.queryParams())
        {
            System.out.println("---"+s);
        }
        System.out.println("ReadParms");
        return "";
    }

只是输出

Received artwork
ReadParms

更新为以表格形式发送

// Once we got everything, time to retrieve our objects
function sendData()
{
    var fD = new FormData();

    // send Files data directly
    var files = imgList.filter(
        function isFile(obj)
        {
            return obj.type === 'file';
        }
    );

    files.forEach(
        function appendToFD(obj)
        {
            fD.append('files[]', obj.file);
        }
    );

    // for elems, we will need to grab the data from the server
    var elems = imgList.filter(
        function isElem(obj)
        {
            return obj.type === "element";
        }
    );

    var urls = elems.map(
        function grabURL(obj)
        {
            return obj.element.src;
        }
    );

    if (urls.length)
        fD.append('urls', JSON.stringify(urls));

    sendFormData(fD);
};

    function sendFormData(fD)
    {
        // but here we will just log the formData's content
        var files = fD.getAll('files[]');
        console.log('files: ', files);
        var urls = fD.get('urls');
        console.log('urls', urls);

        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/editsongs.update_artwork');
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhr.send(fD);
    }

然后在服务器上我有

 public String updateArtwork(Request request, Response response)
    {
        System.out.println("Received artwork");

        for(String s:request.queryParams())
        {
            System.out.println("***"+s);
            System.out.println(request.queryParams(s));
        }
        System.out.println("ReadParms");
        return "";
    }

及其输出

    Received artwork
    ***-----------------------------330219842643
    Content-Disposition: form-data; name
    "urls"

    ["data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxMSEhUSExIWFhUXFxgXGBcYFRgXFxkdGBcWGBgYFx0YHSggHR0lHRkYITEhJSkrLi4uFyA1ODMtNygtLisBCgoKDg0OFQ8PFSsZFRkrLSstLSstKysrLS03KystLSstKy03LSstLSstNzc3KysrLS0tKysrKysrKysrKysrK//AABEIAKoBKQMBIgACEQEDEQH...."]
    -----------------------------330219842643--

ReadParms

所以我现在正在获取数据,但我不明白如何解析 Java 中的 Content-Disposition 部分。

这段代码最初不是由我编写的,因为您可以看到FormData是构建的,它不是来自实际表单。 我的第一次尝试是尝试从FormData 中提取并以不同的方式发送,另一种方法是首先不存储在FormData中,但不知道如何执行此操作。

更新 2尝试只发送第一个 url 而不是 formdata 或一组 url,因为实际上只有一个 url。但它不起作用,服务器什么也没收到?

function sendFormData(urls)
{
    console.log('urls', urls[0]);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/editsongs.update_artwork');
    xhr.setRequestHeader("Content-type", "text/json");
    alert(JSON.stringify(urls[0]));
    xhr.send(JSON.stringify(urls[0]));
}
回答1

您正在尝试使用queryParams()查看正文中的数据,这将为您提供位于 url 中的查询参数。

使用body()从请求正文加载数据。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • jQuery $ .ajax(),$。post在Firefox中以REQUEST_METHOD的形式发送“ OPTIONS”(jQuery $.ajax(), $.post sending “OPTIONS” as REQUEST_METHOD in Firefox)
    问题 我以为是一个相对简单的jQuery插件遇到了麻烦... 该插件应通过ajax从php脚本中获取数据,以向<select>添加选项。 ajax请求非常通用: $.ajax({ url: o.url, type: 'post', contentType: "application/x-www-form-urlencoded", data: '{"method":"getStates", "program":"EXPLORE"}', success: function (data, status) { console.log("Success!!"); console.log(data); console.log(status); }, error: function (xhr, desc, err) { console.log(xhr); console.log("Desc: " + desc + "\nErr:" + err); } }); 这似乎在Safari中可以正常工作。 在Firefox 3.5中,服务器上的REQUEST_TYPE始终为“ OPTIONS”,并且不会显示$ _POST数据。 Apache将请求记录为“ OPTIONS”类型: ::1 - - [08/Jul/2009:11:43:27 -0500] "OPTIONS sitecodes.php HTTP
  • AngularJs $ http.post()不发送数据(AngularJs $http.post() does not send data)
    问题 谁能告诉我为什么下面的语句不将发布数据发送到指定的URL? 该URL被调用,但是在服务器上,当我打印$ _POST时,我得到一个空数组。 如果在将消息添加到数据之前在控制台中打印消息-它显示正确的内容。 $http.post('request-url', { 'message' : message }); 我也尝试过将数据作为字符串(具有相同的结果): $http.post('request-url', "message=" + message); 当我以以下格式使用它时,它似乎可以正常工作: $http({ method: 'POST', url: 'request-url', data: "message=" + message, headers: {'Content-Type': 'application/x-www-form-urlencoded'} }); 但是有没有办法用$ http.post()做到这一点-我是否总是必须包含标头才能使其正常工作? 我认为上述内容类型指定了发送数据的格式,但是我可以将其作为javascript对象发送吗? 回答1 我在使用asp.net MVC时遇到了同样的问题,并在这里找到了解决方案 在AngularJS的新手中,关于$http服务速记函数( $http.post()等)似乎无法与jQuery等效项( jQuery.post(
  • 使用jQuery发送JSON数据(Send JSON data with jQuery)
    问题 为什么下面的代码将发送的数据编码为City=Moscow&Age=25而不是JSON格式? var arr = {City:'Moscow', Age:25}; $.ajax( { url: "Ajax.ashx", type: "POST", data: arr, dataType: 'json', async: false, success: function(msg) { alert(msg); } } ); 回答1 因为您既未指定请求内容类型,也未指定正确的JSON请求。 这是发送JSON请求的正确方法: var arr = { City: 'Moscow', Age: 25 }; $.ajax({ url: 'Ajax.ashx', type: 'POST', data: JSON.stringify(arr), contentType: 'application/json; charset=utf-8', dataType: 'json', async: false, success: function(msg) { alert(msg); } }); 注意事项: 使用JSON.stringify方法将javascript对象转换为JSON字符串,该JSON字符串是本机且内置于现代浏览器中。 如果要支持较旧的浏览器,则可能需要包含json2.js
  • 什么是正确的JSON内容类型?(What is the correct JSON content type?)
    问题 我一直在弄乱JSON一段时间,只是将其作为文本推出,它并没有伤害任何人(据我所知),但是我想正确地开始做事。 我见过这么多的所谓的“标准”为JSON内容类型: application/json application/x-javascript text/javascript text/x-javascript text/x-json 但是哪一个是正确的,还是最好的? 我发现在它们之间存在安全性和浏览器支持问题。 我知道有一个类似的问题,如果REST API返回JSON,则为哪种MIME类型? ,但我想要一个更有针对性的答案。 回答1 对于JSON文本: application/json JSON文本的MIME媒体类型为application/json 。 默认编码为UTF-8。 (来源:RFC 4627)。 对于带回调的JSONP(可运行的JavaScript): application/javascript 以下是相关评论中提到的一些博客文章: 为什么不应该将text / html用于JSON Internet Explorer有时与application / json有关相当完整的Mimetype列表及其用途来自@gnrfan的IANA上的官方MIME类型列表 回答2 IANA已将JSON的正式MIME类型注册为application/json 。
  • AngularJS-$ http.post是否可以发送请求参数而不是JSON?(AngularJS - Any way for $http.post to send request parameters instead of JSON?)
    问题 我有一些旧代码通过jQuery的post方法发出AJAX POST请求,看起来像这样: $.post("/foo/bar", requestData, function(responseData) { //do stuff with response } requestData只是一个具有一些基本字符串属性的javascript对象。 我正在移动我们的内容以使用Angular,并且我想用$ http.post代替此调用。 我想出了以下几点: $http.post("/foo/bar", requestData).success( function(responseData) { //do stuff with response } }); 当我这样做时,我从服务器收到500错误响应。 使用Firebug,我发现这发送了如下请求体: {"param1":"value1","param2":"value2","param3":"value3"} 成功的jQuery $.post发送如下内容: param1=value1&param2=value2&param3=value3 我要命中的端点期望的是请求参数,而不是JSON。 因此,我的问题是是否仍然要告诉$http.post将javascript对象作为请求参数(而不是JSON)发送$http.post ? 是的
  • $ .ajax-数据类型($.ajax - dataType)
    问题 之间有什么区别 contentType: "application/json; charset=utf-8", dataType: "json", 与 contentType: "application/json", dataType: "text", 回答1 contentType是发送到服务器的HTTP标头,用于指定特定格式。 示例:我正在发送JSON或XML dataType是告诉jQuery期望什么样的响应。 期望使用JSON或XML或HTML等。默认值为jQuery尝试找出它。 $ .ajax()文档也对它们进行了完整描述。 在您的特定情况下,第一个请求响应的格式为UTF-8 ,第二个则无关紧要。 同样,第一个将响应视为JavaScript对象,第二个将其视为字符串。 所以第一个是: success: function(data) { // get data, e.g. data.title; } 第二: success: function(data) { alert("Here's lots of data, just a string: " + data); } 回答2 contentType指定作为请求的一部分发送到服务器的数据格式(也可以作为响应的一部分发送,稍后再介绍)。 dataType指定客户端(浏览器)要接收的数据的预期格式。 两者不可互换。
  • jQuery-如何使$ .post()使用contentType = application / json?(Jquery - How to make $.post() use contentType=application/json?)
    问题 我注意到在jquery中使用$ .post()时,默认contentType为application / x-www-form-urlencoded-当我的ASP.NET MVC代码需要具有contentType = application / json时 (有关为什么我必须使用application / json的信息,请参见此问题:ASPNET MVC-当该字段具有值时,为什么ModelState.IsValid为false“ x字段是必需的”?) 如何使$ .post()发送contentType = application / json? 我已经有大量的$ .post()函数,所以我不想更改为$ .ajax(),因为这会花费太多时间 如果我尝试 $.post(url, data, function(), "json") 它仍然具有contentType = application / x-www-form-urlencoded。 那么,如果不将contenttype更改为json,“ json”参数到底会做什么? 如果我尝试 $.ajaxSetup({ contentType: "application/json; charset=utf-8" }); 那行得通,但会影响我拥有的每个$ .get和$ .post并导致某些中断。 因此,有什么方法可以更改$ .post(
  • PHP“ php:// input”与$ _POST(PHP “php://input” vs $_POST)
    问题 当与来自JQuery的Ajax请求进行交互时,我被指示使用方法php://input而不是$_POST 。 我不了解使用此方法与$_POST或$_GET全局方法的好处。 回答1 原因是php://input在请求的HTTP标头之后返回所有原始数据,而与内容类型无关。 PHP的超全局$_POST ,只应该总结的数据要么是 application/x-www-form-urlencoded (用于简单表单发布的标准内容类型)或 multipart/form-data (主要用于文件上传) 这是因为这些是用户代理必须支持的唯一内容类型。 因此,服务器和PHP传统上不希望接收任何其他内容类型(这并不意味着它们不能)。 因此,如果您只是简单地发布旧的HTML form ,则请求看起来像这样: POST /page.php HTTP/1.1 key1=value1&key2=value2&key3=value3 但是,如果您经常使用Ajax,那么这种可能性还包括使用类型(字符串,整数,布尔值)和结构(数组,对象)交换更复杂的数据,因此在大多数情况下,JSON是最佳选择。 但是带有JSON有效负载的请求看起来像这样: POST /page.php HTTP/1.1 {"key1":"value1","key2":"value2","key3":"value3"}
  • 将JSON数据从JQuery发送到WCF REST方法时出现问题(Problem sending JSON data from JQuery to WCF REST method)
    问题 我在让jquery将一些json数据发布到我在WCF服务上拥有的rest方法时遇到麻烦。 在WCF方面,这是运营合同: [OperationContract] [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "PostSomething")] MyResult PostSomething(MyRequest request); MyResult和MyRequest都标记有所有必需的DataContract和DataMember属性,并且服务正在公开WebHttp端点。 在JQuery端,这是我的函数调用: var jsonStr = JSON.stringify(reqObj); $.ajax({ type: "POST", dataType: "json", url: "http://localhost/MyService/PostSomething", contentType: "application/json; charset=utf-8", data: jsonStr, success
  • 处理从ajax帖子下载的文件(Handle file download from ajax post)
    问题 我有一个JavaScript应用程序,可将ajax POST请求发送到某个URL。 响应可能是JSON字符串,也可能是文件(作为附件)。 我可以轻松地在ajax调用中检测Content-Type和Content-Disposition,但是一旦检测到响应包含文件,如何为客户端提供下载文件? 我在这里阅读了许多类似的主题,但是没有一个主题能提供我想要的答案。 拜托,拜托,请不要发布暗示我不应该为此使用ajax或重定向浏览器的答案,因为这都不是选项。 也不能使用纯HTML表单。 我需要做的是向客户端显示一个下载对话框。 能做到吗?如何做到? 回答1 创建表单,使用POST方法,提交表单-无需iframe。 当服务器页面响应请求时,为文件的mime类型写一个响应头,它将显示一个下载对话框-我已经做过多次了。 您想要内容类型的应用程序/下载-只是搜索如何为所使用的任何语言提供下载。 回答2 不要这么快就放弃,因为这可以使用FileAPI的一部分来完成(在现代浏览器中): var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); xhr.responseType = 'blob'; xhr.onload = function () { if (this.status === 200) { var blob = this
  • Post参数始终为null(Post parameter is always null)
    问题 自从为WebAPI升级到RC以来,我在WebAPI上调用POST时遇到了一些真正的奇怪问题。 我什至回到了在新项目上生成的基本版本。 所以: public void Post(string value) { } 并从Fiddler致电: Header: User-Agent: Fiddler Host: localhost:60725 Content-Type: application/json Content-Length: 29 Body: { "value": "test" } 在调试时,永远不会将字符串“值”分配给它。 它始终是NULL。 有人遇到这个问题吗? (我首先看到了一个更复杂的类型的问题) 该问题不仅限于ASP.NET MVC 4,对于RC安装后的全新ASP.NET MVC 3项目,也会发生相同的问题 回答1 由于您只有一个参数,因此可以尝试使用[FromBody]属性装饰它,或更改方法以接受具有值作为属性的DTO,如我在此处建议的那样:MVC4 RC WebApi参数绑定 更新:官方的ASP.NET网站今天进行了更新,并提供了很好的解释:https://docs.microsoft.com/zh-cn/aspnet/web-api/overview/advanced/sending-html-form-data-part- 1个 简而言之
  • 将JSON数据从Javascript发送到PHP?(Send JSON data from Javascript to PHP?)
    问题 如何将JSON数据从浏览器中的Javascript发送到服务器,并由PHP在其中进行解析? 回答1 问题是:将JSON数据从浏览器上的Javascript获取到服务器,然后让PHP成功解析它。 环境: Windows上的浏览器(Firefox)中的Javascript。 LAMP服务器作为远程服务器:Ubuntu上的PHP 5.3.2。 什么有效(版本1): 1)JSON只是文本。 以某种格式的文本,但只是一个文本字符串。 2)在Javascript中, var str_json = JSON.stringify(myObject)给我JSON字符串。 3)我使用Javascript中的AJAX XMLHttpRequest对象将数据发送到服务器: request= new XMLHttpRequest() request.open("POST", "JSON_Handler.php", true) request.setRequestHeader("Content-type", "application/json") request.send(str_json) [... code to display response ...] 4)在服务器上,PHP代码读取JSON字符串: $str_json = file_get_contents('php://input')
  • req.body帖子为空(req.body empty on posts)
    问题 突然,这已经发生在我所有的项目中。 每当我使用express和body-parser req.body在nodejs中发布帖子时,body是一个空对象。 var express = require('express') var bodyParser = require('body-parser') var app = express() // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded()) // parse application/json app.use(bodyParser.json()) app.listen(2000); app.post("/", function (req, res) { console.log(req.body) // populated! res.send(200, req.body); }); 通过ajax和邮递员,它始终是空的。 但是通过卷曲 $ curl -H "Content-Type: application/json" -d '{"username":"xyz","password":"xyz"}' http://localhost:2000/ 它按预期工作。 我尝试在以前手动设置Content-type : application
  • 为什么通过 AJAX 发送 POST 被 HTTP 服务器解释为 OPTIONS 而通过 CURL 发送实际上是 PUT?(Why sending a POST by AJAX is interpreted by the HTTP Server as OPTIONS and sending by CURL is effectively a PUT?)
    问题 我正在测试使用 C++ 和 Boost 库自行开发的 HTTP 服务器。 更具体地说,我正在测试 PUT 接收 JSON 的端点。 为了测试 RESTFul 网络服务,我使用 Curl 和以下命令: curl -H "Content-Type: application/json" -H "Content-Length: 34" -H "Connection: close" -X PUT --data "@response_json" http://localhost:8080/answer 其中 response_json 是一个包含要发送的 json 的文件。 这工作正常,服务器将请求作为 PUT 接收并执行应该执行的操作。 但是,当我使用 AJAX 测试 Web 服务时: function sendPut2() { var http = new XMLHttpRequest(); var url = 'http://localhost:8080/answer'; var data = JSON.stringify({"question": "a", "answer": "b"}); http.open("PUT", url, true); http.setRequestHeader("Content-type", "application/json"); http
  • Javascript: Uploading a file… without a file(Javascript: Uploading a file… without a file)
    问题 我试图在不实际使用用户输入文件的情况下伪造文件上传。 文件的内容将从字符串动态生成。 这可能吗? 以前有人做过吗? 是否有可用的示例/理论? 澄清一下,我知道如何使用隐藏的iframe和朋友使用AJAX技术上传文件-问题是上传的文件不在表格中。 我正在使用ExtJS,但是jQuery也是可行的,因为ExtJS可以插入其中(ext-jquery-base)。 回答1 为什么不将XMLHttpRequest()与POST一起使用? function beginQuoteFileUnquoteUpload(data) { var xhr = new XMLHttpRequest(); xhr.open("POST", "http://www.mysite.com/myuploadhandler.php", true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) alert("File uploaded!"); } xhr.send("filedata="+encodeURIComponent(data));
  • Ajax底层原理与jQuery中的Ajax
    Ajax 是异步的xml 和javascript,是一种综合技术。 利用 XMLHttpRequest(xhr)和后端进行数据交换。通过js 动态的渲染页面实现网页异步局部更新 同步与异步 同步代码会按顺序执行,当前面代码未执行完毕,后续代码不会执行,会阻塞代码执行异步不会阻塞代码 XMLHttpRequest(xhr) 创建xml对象 var xhr = new XMLHttpRequest(); 打开HTTP连接 xhr.open(method,url,aync=true) 监听xhr的变化 xhr.onreadystatechange = function(){ if(xhr.readyState==4&&xhr.status==200){ console.log(xhr.responseText); p.innerHTML = xhr.responseText; } } 设置头信息 xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 发送数据 xhr.send(); GET //建立一个xhr对象 var xhr = new XMLHttpRequest(); //打开的方法,地址,是否异步 xhr.open("GET","./be.txt",true); xhr.send()
  • php $ _POST数组在表单提交时为空(php $_POST array empty upon form submission)
    问题 我有一个自定义的内容管理系统(CMS),可以在我的开发箱(Ubuntu / PHP5 + / MySQL5 +)上完美运行。 我只是将其移至客户的生产框,现在所有表单提交都显示为空的$ _POST数组。 我发现了一个技巧,可以使用file_get_contents('php://input');来验证数据是否确实在传递file_get_contents('php://input'); 并且数据显示良好- $_POST / $_REQUEST数组始终为空。 我还通过firebug( application/x-www-form-urlencoded; charset=utf-8 )验证了内容类型标头也是正确的。 无论表单是通过AJAX提交还是通过常规表单提交,都会发生此问题。 任何帮助是极大的赞赏! 回答1 我知道这个问题是关于通过表单进行POST的,但是在使用JSON内容类型进行POST时,来到这里寻找类似问题的答案。 找到了答案并想分享,因为这花了我很多时间。 使用JSON内容类型时,不会填充$ _POST数组(我相信只有多部分表单) 这是解决此问题的有效方法: $rest_json = file_get_contents("php://input"); $_POST = json_decode($rest_json, true); 希望这对某人有帮助! 回答2
  • Extjs 4.2:如何在 Ext.Ajax.Request POST 中正确发送参数(Extjs 4.2: How to send parameters properly in a Ext.Ajax.Request POST)
    问题 我必须从我的 ExtJs 脚本中执行 POST 才能从我的数据库中删除某些内容: Ext.Ajax.request({ url: 'deleteRole.html', method: 'POST', headers: {'Content-Type': 'text/html'}, waitTitle: 'Connecting', waitMsg: 'Sending data...', params: { "rolename" : rolename }, scope:this, success: received, failure: function(){console.log('failure');} }); 发送帖子时,我可以在萤火虫中看到字体中的角色名称,但不是参数。 我想向您展示另一篇关于用户注册的帖子(用 spring:form 制作)。 如果我检查帖子,我可以看到以下内容: (来源:subirimagenes.com) 我可以使用@RequestParam 在我的控制器中获取参数。 但是在我遇到问题的帖子中,我看不到参数部分,我只能看到 Font(Fuente) 部分: (来源:subirimagenes.com) 结果,我的弹簧控制器没有检测到任何参数。 我的帖子有问题吗? 谢谢 回答1 问题是您在原始问题中使用了行headers: {'Content-Type'
  • 通过ajax调用php下载文件(Download file through an ajax call php)
    问题 我有一个按钮, onclick它会调用ajax函数。 这是我的ajax功能 function csv(){ ajaxRequest = ajax();//ajax() is function that has all the XML HTTP Requests postdata = "data=" + document.getElementById("id").value; ajaxRequest.onreadystatechange = function(){ var ajaxDisplay = document.getElementById('ajaxDiv'); if(ajaxRequest.readyState == 4 && ajaxRequest.status==200){ ajaxDisplay.innerHTML = ajaxRequest.responseText; } } ajaxRequest.open("POST","csv.php",false); ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); ajaxRequest.send(postdata); } 我根据用户输入创建csv文件。 创建之后,我希望它提示下载或强制下载(最好是强制
  • 如何将JSON POST数据作为对象传递给Web API方法?(How to pass json POST data to Web API method as an object?)
    问题 ASP.NET MVC4 Web API应用程序定义了保存客户的发布方法。 客户在POST请求正文中以json格式传递。 post方法中的Customer参数包含属性的空值。 如何解决此问题,以便过帐的数据将作为客户对象传递? 如果可能的话,应该使用Content-Type:application / x-www-form-urlencoded,因为我不知道如何在发布表单的javascript方法中更改它。 控制器: public class CustomersController : ApiController { public object Post([FromBody] Customer customer) { return Request.CreateResponse(HttpStatusCode.OK, new { customer = customer }); } } } public class Customer { public string company_name { get; set; } public string contact_name { get; set; } } 要求: POST http://localhost:52216/api/customers HTTP/1.1 Accept: application/json, text