2

ユーザーが複数選択選択ボックス(A)からアイテムを選択できるフォームがあります。アイテムがリストされていない場合、ユーザーは別の入力テキストボックス(B)からアイテムを追加できます。(B)に入力された値は、アイテムをデータベースに保存するajax呼び出しを実行します。アイテムを保存した後、jsonオブジェクトが作成され、更新されたリストを(A)に入力する必要があります。私はこれらすべてをオプションで動作させています。保存プロセスが成功したか失敗したかを含める必要があります。プロセスが成功した場合は、オプションを含める必要がありますが、失敗した場合は、失敗したステータスが必要です。これが私が思いついたものです:

{
    "process": [{
        "status":"pass" ,
        "message":"The Contributors list has been refreshed to contain the entry you just saved." }
    ],
    "newoptions": [
        {"optionValue":"Item 1" , "optionDisplay":"Item 1"},
        {"optionValue":"Item 2" , "optionDisplay":"Item 2" },
        {"optionValue":"Item 3" , "optionDisplay":"Item 3" }
    ]    
}

これは、.ajaxルーチンで使用しているものです。

success: function(j){
    if (j.process.status == 'pass'){
        var options = '';
        for (var i = 0; i < j.newoptions.length; i++) 
            {
                options += '<option value="' + j.newoptions[i].optionValue + '">' + j.newoptions[i].optionDisplay + '</option>';
            }
        $('#misc_userID').val('');  // reset value back to null 
        $("#misc_userID").effect("transfer", { to: $("#group_misc_available") }, 500);  //visual showing item added to select
        $('#group_misc_available').html(options);
    }
    else if (j.status == 'fail'){
        alert(j.process.message);   
    }
}

エラーは発生していませんが、j.process.statusも処理されていないため、選択リスト(A)が更新されていません。

4

2 に答える 2

3

あなたはarrayそれprocessにアクセスする必要がありますindex

if (j.process.status == 'pass'){

だろう

if (j.process[0].status == 'pass'){
于 2012-10-04T15:33:31.190 に答える
3

jsonデータに正しくアクセスしていません。これを試して

if (j.process[0].status == 'pass'){
于 2012-10-04T15:33:39.530 に答える