Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';t卡斯珀斯';sendAJAX函数是否为PUT请求发送任何内容?_Javascript_Casperjs_Put - Fatal编程技术网

Javascript 为什么';t卡斯珀斯';sendAJAX函数是否为PUT请求发送任何内容?

Javascript 为什么';t卡斯珀斯';sendAJAX函数是否为PUT请求发送任何内容?,javascript,casperjs,put,Javascript,Casperjs,Put,我想通过我的应用程序使用PUT方法更新JSON对象。我试图部分模拟表单提交的操作。这个调用是同步的,因为在PUT之后,应该返回一个200。但是,当我尝试下面的代码时,sendAJAX不包括对象的内容,PUT请求的内容长度为:0。通过表单提交的内容具有所有正确的设置-内容类型、x-requested-with等。我不太清楚为什么下面的代码不能像我预期的那样工作。我还尝试将var“data”设置为json格式的参数字符串。这也会导致内容长度为0的PUT请求 我做错了什么 casper.then(fu

我想通过我的应用程序使用PUT方法更新JSON对象。我试图部分模拟表单提交的操作。这个调用是同步的,因为在PUT之后,应该返回一个200。但是,当我尝试下面的代码时,sendAJAX不包括对象的内容,PUT请求的内容长度为:0。通过表单提交的内容具有所有正确的设置-内容类型、x-requested-with等。我不太清楚为什么下面的代码不能像我预期的那样工作。我还尝试将var“data”设置为json格式的参数字符串。这也会导致内容长度为0的PUT请求

我做错了什么

casper.then(function() {
    this.evaluate(function() {
    var element = document.querySelectorAll("h6");
    for (var i = 0; i < element.length; i++) {
        if (element[i].innerHTML == "Special Tag") {
            var appid = element[i].parentNode.parentNode.getAttribute("app-id");

            var wsurl = "https://appurl.net"+appid;
            var data = new Object();
            data.user_id = "xxxxx-xxxx-xxxx-xxxx-xxxx";
            data.name = "Name";
            data.description = "blahr blahr blahr";
            data.amount = "-9000000";
            data.start = 1409900400000;
            data.finish = 1412492400000;
            data.seq = 0;
            data.locked = false;
            data.paused = false;
            data.contributed_amount = 0;
            data.created = 1409920472782;
            data.modified = 1426538857339;
            data.color = "#E37368";
            data.archived = false;
            data.target_amount = null;
            data.uuid = "xxxx-xxxxx-xxxxx-xxxxxx";
            data.aprox_daily_contribution = 0;
            return JSON.parse(__utils__.sendAJAX(wsurl, "PUT", data, false, { contentType: "application/json"}));
casper.then(函数(){
这个。evaluate(函数(){
var元素=document.queryselectoral(“h6”);
对于(变量i=0;i
CasperJS函数不支持PUT请求,如图所示:

或者更准确地说,它只支持POST请求的有效负载。您必须自己构建XHR或相应地更改CasperJS代码



我认为您不需要模拟表单提交。如果您正在测试web应用程序,那么最好实际提交表单,然后检查表单是否生成了正确的页面,而不是解析响应,因为您需要两次有效地实现逻辑:在页面JavaScript和测试脚本中。

1。它不会导致错误好的,就像您正在使用
sendAJAX()
响应一样。您如何知道内容是空的?您是否有机会查看
casper.on(“resource.received”,function(res){…});
事件输出?2.检查是否发送了完全相同的请求。可能在表单提交期间存在的标题在XHR期间不存在。例如,使用wireshark来比较这些请求。我正在使用resource.sent和resource.received。我的目标是模拟表单提交,但目前我不想这样做o生成对表单操作的类似PUT请求。当我看到resource.sent时,内容长度标题设置为0。我捕获了表单操作的请求。如果请求中有不完整或缺少的信息,服务器将以500作为响应。My sendAjax()在不包含“data”对象的情况下组装PUT请求,服务器以500“no content”响应。我希望这能在某种程度上澄清我的问题。感谢您的回复。感谢您澄清这一点。我正在为一个内部应用程序开发一个小型框架,用于模糊发送到后端服务的参数。我希望在适当的时候绕过前端验证器。这基本上是我第一次尝试编写一个方便的测试方法正在初始化应用程序参数。通过表单提交,我必须使用包装器函数捕获XMLHTTPRequest,并动态修改请求。我有这方面的代码,但我真的希望我至少可以使用sendAJAX PUT获得基本的概念证明。我明白了。直接使用XMLHTTPRequest而不是sendAJA非常简单十,。
xhr.send(method === "POST" ? dataString : null);