0

次のように定義されたajaxsubmitメソッドがあります

var new_options = {
            dataType: 'json', 
            beforeSubmit: function() {
              alert('inside before submit');
              $(".available_script_arguments").each(function(index) {
                argument_id = $(this).val()
                $("td#argument_"+argument_id).addClass("resource_automation_loader");
               });                 
            },
            success: function(data) {
              alert('inside success');
              $(".available_script_arguments").each(function(index) {                    
                argument_id = $(this).val()
                $("td#argument_"+argument_id).removeClass("resource_automation_loader");
                $("td#argument_"+argument_id).html(data[argument_id]).html(); 
                $("td#argument_"+argument_id).html("<span></span>");
                updateTargetArgumentId();
                triggerAdapterResourceAutomation();
              });
            },
            error: function(jqXHR, textStatus, errorThrown){
              alert('inside error');
             $(".resource_automation_loader").each(function(){
                // This will hide the loader
                $(this).removeClass("resource_automation_loader");
                // This will display text N.A indicating the resource automation has failed
                $(this).html("<input type='text' value='' placeholder='N.A'></input>");
             });
            }
          };
          $("form#update_resource_automation_parameters").ajaxSubmit(new_options);

この機能は Firefox では正常に動作しますが、IE7 では動作しません。

その理由を突き止めたところ、成功コールバックで使用されているjquery html関数で出てきました。

成功のコールバック データのように、html (div と select の組み合わせ) として送信されます。

成功コールバックでデータを検査した後 (以下に示す)

<div >
<select arg_val="null">
<option value="">Select</option>
<option value="0">Corporate Strategic</option>
<option value="1">Business Unit Strategic</option>
<option value="2">Maintenance</option>
<option value="3">Defect</option>
</select>
</div>

したがって、このデータは基本的にビューの選択リストに出力されますが、これは IE7 では機能しません。

誰かがこれについて何か考えを持っているかどうか教えてください。

ありがとう、ディーン。

4

2 に答える 2

0

appendの代わりに使用してみてくださいhtml

于 2012-10-10T12:55:19.420 に答える
0

rahul の回答に加えて、jquery を使用して常に同じオブジェクトを選択しています。JQuery でアクションを実行すると、影響を受けるオブジェクトが返されるため、アクションを連鎖させることができます。

例えば:

$("td#argument_"+argument_id).removeClass("resource_automation_loader");
$("td#argument_"+argument_id).html(data[argument_id]).html(); 
$("td#argument_"+argument_id).html("<span></span>");

になることができる:

$("td#argument_"+argument_id).removeClass("resource_automation_loader")
                             .append(data[argument_id])
                             .append("<span></span>");

オブジェクトを一度だけ選択します。

于 2012-10-10T13:00:29.147 に答える