【问题标题】:Sending POST/PUT via AJAX using casperjs使用 casperjs 通过 AJAX 发送 POST/PUT
【发布时间】:2014-07-23 07:28:41
【问题描述】:

是否可以使用 Casperjs 将 JSON 对象“POST”或“PUT”到 API?

我可以成功地对我的 API 进行 GET 调用。我似乎无法让 POST/PUT 工作。

我正在尝试通过我设置的 API 将 JSON 对象发送到我的网站。我正在使用最新版本的 Casperjs,并通过命令行设置 --web-security=no。我阅读了文档,但没有找到将标头值添加到 AJAX 调用的地方。我看到有一个“选项”参数,但以下不起作用。我知道 JSON 和 URL 都是正确的,因为我已经使用 chrome 扩展邮递员进行了尝试。我似乎无法弄清楚如何添加标题。

try {
    return JSON.parse(__utils__.sendAJAX("url to API", 'POST', jsonObject, false, 
         {
            dataType: "json",
            headers:{
                contentType: "application/json; charset=utf-8"
            }
         }));
} catch (e) {
    console.log(e);
}

try/catch 中没有返回任何内容。如果我打印 JSON.parse 它只是来自我的网页要求正确标题的 HTML。

我尝试了不同的设置变体,甚至尝试什么都不传递。例如:

try {
    return JSON.parse(__utils__.sendAJAX("url to API", 'POST', jsonObject, false, null));
} catch (e) {
    console.log(e);
}

还是没有运气。

【问题讨论】:

  • 您可以注册remote.messagepage.error 活动以查看发生了什么。
  • casper.on('remote.message', function(msg){}casper.on( 'page.error', function (msg, trace) {} 没有返回任何内容。 AJAX 运行良好,但由于某种原因我无法设置任何标题(或者我设置错误)
  • 你需要什么标题?从源码来看只能设置overrideMimeTypecontentType
  • 只是contentType : application/json,但我已经尝试过使用它,并在示例中使用headers 标签。其他人是否使用 casperjs 的客户端实用程序在 POST 和 PUT 方面取得了成功?
  • 您在哪里看到设置overrideMimeType 的功能?我在 CasperJS 网站上的文档中的任何地方都看不到它。

标签: javascript ajax phantomjs casperjs


【解决方案1】:

您需要使用正确的设置键传递正确的内容类型。所以这应该有效。如果您的服务器端点只希望请求正文中包含 JSON,那么您需要先对其进行序列化。

return JSON.parse(__utils__.sendAJAX("url to API", 'POST', JSON.stringify(jsonObject), false, 
{
    contentType: "application/json"
}));

;

【讨论】:

  • 这也不起作用。我得到的结果与我在问题中使用的结果相同。
  • 也许你需要字符串化。
  • 我已经尝试过 JSON.stringify 和不同的设置选项。我想知道是否有其他人成功完成了 POST 和 PUT。如果有,他们是不是弄乱了设置参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2013-02-15
  • 1970-01-01
  • 2021-06-06
相关资源
最近更新 更多