我想使用PUT方法通过我的应用程序更新JSON对象。我试图部分模拟表单提交的操作。此调用是同步的,因为在PUT之后,应该返回200。但是,当我尝试下面的代码时,sendAJAX不包含对象的内容,PUT请求的内容长度为:0。通过表单提交的内容具有所有正确的设置 - content-type,x-requested - 等等我不太清楚为什么下面的代码没有像我期待的那样发挥作用。我也试过设置var'数据'作为一串json格式的参数。这也导致内容长度的PUT请求:0。
我在这里做错了什么?
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"}));
答案 0 :(得分:0)
CasperJS&#39; sendAJAX()
函数不支持code中的PUT请求:
xhr.send(method === "POST" ? dataString : null);
或者更准确地说,它仅支持POST请求的有效负载。您必须自己构建XHR或相应地更改CasperJS代码。
我认为你不需要模拟表单提交。如果您正在测试Web应用程序,那么最好实际提交表单,然后检查它是否产生了正确的页面而不是解析响应,因为您需要有效地实现逻辑两次:在页面中JavaScript和测试脚本。