1

入力した電子メールがデータベースに既に存在する場合にカスタムエラーメッセージを表示したい jqGrid プラグインを使用するデータグリッドがあります。フィールドを cfc に渡し、次の json を返します (これが Firebug ウィンドウに表示されるので、その部分は問題ありません): {"USERDATA":{"MSG":"Email already exists in registration","TYPE":"エラー"}}

したがって、基本的には、この json を解析してアラートを作成するか、モーダル ウィンドウで何かを実行しようとしています。ここで次のコードを見つけましたが、json をうまく渡しているようです。GetResponseData 関数を呼び出す追加オプションの一部を次に示します。

{addCaption:"Add Recipient",closeOnEscape:true,savekey: [true,13],closeAfterEdit : false, errorTextFormat:commonError,width:"450"
            ,afterSubmit:function(response,postdata){ return GetResponseData(response); },reloadAfterSubmit:true,bottominfo:"Fields marked with (*) are required",top:"60",left:"70"}

テストにアラートが追加された関数:

function GetResponseData (resp) {

var jtxt=(resp.responseText);  //{"USERDATA":{"MSG":"Email already exists in registration","TYPE":"Error"}}

var jreturn=JSON.parse(jtxt)        

alert(jreturn); //shows '[Object.object]'

var msg=jreturn.USERDATA[0].MSG;
var type=jreturn.USERDATA[0].TYPE; 
alert(msg);
alert(type);
}

JSON.parse と eval() の両方を同じエラーで試しました: resp.USERDATA is undefined

みんな、ありがとう!私はCFとjqueryにかなり慣れていないので、助けていただければ幸いです。

4

1 に答える 1

2

Firebug または Google Chrome を使用している場合は、コンソール ビューを使用し、アラートを console.log() 呼び出しに置き換えることをお勧めします。これにより、オブジェクトを調べて、それらがどのように構造化されているかを確認できます。

試す

console.log(jreturn)

jreturn.USERDATA[0].MSG; を使用しているようです。. 配列であるかのように USERDATA にアクセスしているのはなぜですか? responseText の出力として表示されるものについては、これは次のようになります。

jreturn.USERDATA.MSG;
于 2012-04-19T02:34:20.383 に答える