0

これが私の最初の質問です!

クライアント側の検証ライブラリで使用するために、AJAX 経由で JSON を呼び出しています。ライブラリは、現在のルールのどこにエラー メッセージを挿入したいかを指定するように要求します。私の静的検証ルールでは、次のようなオブジェクトを作成できます。

{ 'errorlocation' : jQuery('[name="foo"]').closest('.bar') }

私の検証ライブラリを使用すると、最初の初期化後にさらに多くのルールを挿入できるため、REST でモデルを送信すると、エラーのあるサーバー応答を受け取ることができました。私は現在、そのサーバー応答を開発しています。エラー応答は単純に検証ルールの配列であって、ページで既に作成されている同じ検証オブジェクトに後でそれらのルールを挿入できるようにすることをお勧めします。したがって、応答 JSON 内で、上記のコード スニペットのような定義が必要になります。

jQuery()jQuery がグローバル名前空間で確実に利用可能であるにもかかわらず、Backbone と jQuery のパース json アルゴリズムはオブジェクトの値を評価できないようです。したがって、これは機能しません:

jQuery.parseJSON("{ 'errorlocation' : jQuery('[name=\"foo\"]').closest('.bar') }");

「[name='foo']」を保存して解析後にjQueryすることだけを考えましたが、上記のように連鎖させたい場合にはうまくいきません.closest('.bar')

グローバル名前空間にある変数を解析/許可する JSON パーサーを知っている人はいますか?

4

2 に答える 2

1

JSON はデータ形式であり、コード形式ではありません。通常、サーバーからクライアントにデータを渡し、クライアントがそのデータを使用してアクションを決定するようにシステムを構築します。fooそのため、データとしてandを渡し、.bar実行する関数を決定する別のパラメーターを渡すことができます。

本当にこのように設計する必要があり、私はそうしないことをお勧めしますが、eval を使用して、次のように任意の文字列を JavaScript として評価できます。

var errorInfo = jQuery.parseJSON(
    "{ 'errorlocation' : \"jQuery('[name=\"foo\"]').closest('.bar')\" }");

eval(errorInfo.errorocation);
于 2013-03-21T04:27:36.020 に答える
0

jQuery 呼び出し全体を文字列として格納し、クライアント側で eval を実行することを検討しましたか? このような:

json = jQuery.parseJSON("{ 'errorlocation' : 'jQuery(\'[name=\"foo\"]\').closest('.bar')' }");
location = eval(json.errorlocation) //runs the jQuery string
于 2013-03-21T04:21:29.060 に答える