2011-06-28 12 views
0

私はこのJqueryの問題の周りに頭を浮かべることはできません。 私は周りを見てきましたが、いくつかの解決策を見つけましたが、うまくいかないようです。投稿時にJQuery変数を送信

私はMVCプロジェクトを持っています。私はソート可能なものを使用していますが、それは魅力的です。私はコントローラに戻る私のリストの新しい注文を送信する場合 問題は、私はalert(items)を使用してい ...であり、それは私がしたい文字列を示します。..

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>ArrangeAttributesViewModel</legend> 
     <div id="contentWrap"> 
      <p> 
      </p> 
      <p> 
      </p> 
      <div> 
       _category.CategoryName</div> 
      <div id="attributeList" class="container"> 
       <ul> 
        @foreach (var _category in Model.AttributeList) 
        { 
         <li id="@("a_" + _category.CategoryID.ToString())"> 
          @_category.CategoryName 
         </li> 
        } 
       </ul> 
      </div> 
      <p> 
      </p> 
      <p> 
       <input type="submit" id="SaveButton" value="Save Changes" /> 
      </p> 
     </div> 
    </fieldset> 
} 

そして、ここではスクリプトです:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("li").hover(function() { 
      $(this).css('cursor', 'move'); 
      $(this).css('background-color', '#2c87b2'); 
     }, 
      function() { 
       $(this).css('cursor', 'auto'); 
       $(this).css('background-color', '#5c87b2'); 
      }); 

     $("#attributeList ul").sortable({ 
      opacity: 0.6, 
      cursor: 'move', 
      update: function() { 
       items = $(this).sortable('toArray'); 
       alert(items); 
      } 
     }); 

     var items; 

     $("#SaveButton").click(function() { 
      alert(items); 

      $.post({ 
       url: '/Profile/ArrangeCategories', 
       type: 'POST', 
       data: { items: items }, 
       traditional: true 
      }); 
     }); 
    }); 
</script> 

私は

..コントローラで

[AcceptVerbs(HttpVerbs.Post), Authorize] 
public ActionResult ArrangeCategories(int ProfileID, string[] items) 

を使用しています

ご迷惑をおかけして申し訳ありません。

編集

:私は少し一部のユーザーの入力した後にコードを変更した ...

は今、すべては私がボタンを押したときに、他の言葉で私は警告が表示、変数の送信まで正常に動作します。 ..

答えて

0

オクラホマので、私はこの問題を解決..

まず、私が間違っていた、string[]ように、コントローラへの入力を定義しました。それはList<string>であるはずです。

第二に、私は(アイテムのアイテムIDに、変数名の変更を無視する)$.ajaxから$.postが、これは私がなってしまったものです変更:

$("#SaveButton").click(function() { 

    var order = $("#attributeList ul").sortable('toArray'); 

    alert(order); 

    $.ajax({ 
     data: { itemIds: order }, 
     type: 'POST', 
     traditional: true 
    }); 
}); 

希望を、これは他の誰かに便利です!

2

変数 "items"が$ .postの有効範囲外です。 .sortableの外部変数を宣言()

  var items; // <-- declare the variable here. 

      $("#attributeList ul").sortable({ 
       opacity: 0.6, 
       cursor: 'move', 
       update: function() { 
        items = $(this).sortable('toArray'); 
        alert(items); 
       } 
      }); 

      $('submit').click(function() { 

       $.post({ 
        url: '/Profile/ArrangeCategories', 
        type: 'POST', 
        data: { items: items } 
       }); 
      }); 
+0

右クリックイベントを使用していないことに気付きました。残念ながらまだ問題は解決していません。問題を編集します... – bek

関連する問題