1

jquery を使用せずに json データを cfc に送信するために、さまざまなオプションを試しました。リクエストをCFCに送信しますが、「FORMDATA」と言い続けるcfcに変数を渡すことができません(これは渡されません)。フォームデータと呼ばれる変数があります。私がそれを機能させることができた唯一の方法は、新しい formData() オブジェクトを使用することですが、IE 8 および 9 で機能させる必要がありますか?

  <cfcomponent>

    <cffunction name="validate" access="remote" >

        <cfargument name="formdata" required="true" type="string"/>

        <!--- <cfif isJSON(arguments.formdata)>
            <cfset values = deserializeJSON(arguments.formdata)>
        </cfif> --->
        <cfdump var="#variables#">
        <cfdump var="#arguments#">

        <cfreturn { STATUS = 200, MESSAGE = "data recieved"}>

    </cffunction>

</cfcomponent>

ここに私のJavaScriptがあります

         var xhr = new XMLHttpRequest();
         xhr.open("POST", "validation.cfc?method=validate", true);
         xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');

          // send the collected data as JSON
         xhr.send(JSON.stringify({formdata:data}));

         xhr.onloadend = function () {
            console.log(xhr.responseText);
         };

何が間違っているのかわかりませんか?

4

2 に答える 2

2

FORMスコープ内にあるためには、フォーム エンコードされたデータを送信する必要があります ( argumentsCFC 関数へのリモート呼び出しの場合)。したがって、コンテンツ タイプを次のように変更します。

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

send() 呼び出しを次のように変更します。

xhr.send("formdata=" + JSON.stringify(data));

JSON 文字列としてarguments.formdata引数に渡す必要があります。

于 2013-10-22T19:55:17.367 に答える