うまく機能する UI とサーバー データ交換がありますが、Frisby.js を使用した新しい開発のテストを開始したいと考えていました。UI には、jQuery を使用する JavaScript フォーム マネージャーがあります。私の要求本文は、最初に JSON.stringify でシリアル化された JavaScript オブジェクトです。
var msg = {form:"login",data{username:"elmer",password:"wabbit"}};
var json_msg = JSON.stringify(msg);
次に、jQuery によって送信されます。
$.ajax(
url: baseUrl+"forms/"+call,
data: { req: json_msg },
type: "POST",
success: function(msg){...
サーバーで受信した生の本文コンテンツは次のようになります。
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] を URI エンコードする必要があります。これらの 2 つの手順は jQuery.ajax() で簡単に実行できますが、Frisby.js では不可能に見えます
私が試した: シリアライズされていない JavaScript オブジェクトの使用、シリアライズされた JavaScript オブジェクトの使用、およびシリアライズされて URI エンコードされたテキスト (ここに表示)
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 エンコーディングの組み合わせを実行できない可能性があります。