首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >frisby.js post正文内容语法

frisby.js post正文内容语法
EN

Stack Overflow用户
提问于 2015-11-11 02:49:47
回答 2查看 954关注 0票数 0

我有一个运行良好的UI和服务器数据交换,但我想开始使用Frisby.js测试新的开发。该UI有一个使用jQuery的JavaScript表单管理器。我的请求体是一个首先用JSON.stringify序列化的JavaScript对象。

代码语言:javascript
复制
var msg = {form:"login",data{username:"elmer",password:"wabbit"}};
var json_msg = JSON.stringify(msg);

然后由jQuery发送:

代码语言:javascript
复制
$.ajax(
    url: baseUrl+"forms/"+call,
    data: { req: json_msg },
    type: "POST",
    success: function(msg){...

服务器收到的原始正文内容如下所示:

代码语言:javascript
复制
req=%7B%22form%22%3A%22login%22%2C%22data%22%3A%7B%22username%22%3A%22elmer%22%2C%22password%22%3A%wabbit%22%7D%7D

因为这个原始的正文内容是我的服务器所期望和成功使用的,所以我尝试了几种内容类型头部和内容格式的组合,但是Frisby.js阻塞了它们或者发送了错误的正文。

注意: 1.首先必须序列化消息( JavaScript对象)。2.则req=serialized_message必须为URIencoded。使用jQuery.ajax()可以轻松地执行这两个步骤,但在Frisby.js上似乎不可能

我尝试过:使用未序列化的JavaScript对象,使用序列化的JavaScript对象和序列化的URIencoded文本(如下所示)

代码语言:javascript
复制
msg = "%7B%22form%22%3A%22login%22%2C%22data%22%3A%7B%22username%22%3A%22elmer%22%2C%22password%22%3A%wabbit%22%7D%7D";

frisby.create('Login on HHHLEG web site.')
  .addHeader('X-Requested-With', 'XMLHttpRequest')
  .post('http://hhhleg/forms/login', req=msg )

当上面的代码到达服务器时,它的主体中什么都没有。我怀疑可能存在一些简单的语法问题或内容类型问题,或者Frisby.js无法执行序列化和URI编码的组合,因为它阻塞了所涉及的字符。

EN

回答 2

Stack Overflow用户

发布于 2015-11-11 03:07:44

Frisby可能需要一个JSON编码的请求主体,而不是jQuery的默认application/x-www-form-urlencoded

尝试设置contentType

代码语言:javascript
复制
$.ajax({
    url: baseUrl+"forms/"+call,
    data: { req: json_msg },
    type: "POST",
    contentType: "application/json",
    // other properties...
});
票数 0
EN

Stack Overflow用户

发布于 2017-03-03 10:51:44

在类似的问题中,对我有以下帮助:

  1. 创建具有所需名称的变量(在您的示例中为"req"),并使用msg content
  2. 发送它,使用的不是普通的frisby js post构造函数,而是如下所示:

代码语言:javascript
复制
...
    frisby.create('Send valid data in post')
        .post(YourPath,
            req, //before it we need to assign to it value by
                 //"var req = msg" or any byte array
            {
                json: false,
                headers: {
                    "content-type": "application/octet-stream",
                    "Authorization": your.authToken //if needed
                }
            })
        .expectStatus(200)
...

在我的例子中,我尝试发送图像字节数组,但在发送URLencoded消息和JSON-form请求时遇到了类似的问题。

如果它没有帮助,或者看起来不像你的情况-你可以访问https://github.com/vlucas/frisby/tree/legacy-0.x/examples页面,以获得更多POST请求与数据发送的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33637318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档