2016-02-19 44 views
0

我嘗試每一個客戶端從我的下拉列表中選擇一個選項的時間去送價值回控制器在那裏我使用創建一個文件,然後刷新頁面,但即時通訊無法值這樣做pass選項選擇值以控制

這是我的下拉列表:

<select id="sel0"> 
 
<option value="">Todos</option> 
 
    @foreach (var item in Model.Select(l => l.Fecha).Distinct()) 
 
      { 
 
<option value="@lines">@lines</option> 
 
      } 
 
</select>

這是我的AJAX調用:

$('#sel0').on('change', function() { 
 
         dataTable.columns('.fechas').search(this.value).draw(); 
 
        }); 
 

 
        $("form").submit(function() { 
 
         $.ajax({ 
 
          url: '@Url.Action("MethodName","HomePosController")', 
 
          type: 'POST', 
 
          cache: false, 
 
          data: { Selected: $("#sel0").val() }, 
 
          success: function (data) { 
 
           // 
 
          } 
 
         }); 
 
        });

,這是我的控制器其命名爲「HomePosController」:

public ActionResult MethodName(string Selected) 
    { 
     var db = new ArponClientPosContext(); 

     String value = Selected; 
     var json4 = JsonConvert.SerializeObject(Selected); 
     System.IO.File.WriteAllText(@"C:\inetpub\wwwroot\potzolcalli.brain.arpon.com\valorselected.txt", json4); 
     return View("~/Views/HomePos/Index.cshtml", db.Pos.ToList()); 
    } 

但每當Ÿ選擇我的下拉沒有一個選項發生時,頁面的不刷新,也不是文件被創建我究竟做錯了什麼?

+0

你提交表單,或者只是改變下拉菜單中的價值?描述暗示後者,但代碼正在尋找前者。 – David

+0

即時更改下拉列表的值我如何觸發ajax?我希望它在下拉列表中的值發生變化後觸發 –

回答

1

如果你希望它是在下拉菜單的變化,那麼你必須在變化的事件發送Ajax調用:

$('#sel0').on('change', function() { 

    dataTable.columns('.fechas').search(this.value).draw(); 

    $.ajax({ 
         url: '@Url.Action("MethodName","HomePos")', 
         type: 'POST', 
         cache: false, 
         data: { Selected: $("#sel0").val() }, 
         success: function (data) { 
          // 
         } 
        }); 

,你必須不寫完整的控制器類名,你要跳過控制器後綴,這是慣例接着是在MVC網址助手,生成您的網址將是錯誤的,Ajax調用會失敗的方式。

1

每當Ÿ選擇我的下拉沒有一個選項發生

那麼,出現這種情況:

dataTable.columns('.fechas').search(this.value).draw(); 

但是,這並不調用Ajax請求。它沒有做任何事情,真的。

我怎樣才能觸發Ajax?我希望有一個值在下拉列表中

在你想這樣做,對select元素的change事件這種情況下,改變後觸發。目前,您在此處執行AJAX請求:

$("form").submit(function() { 
    // AJAX 
}); 

也就是說,您在表單的提交事件中執行請求。只需將其添加到下拉的變化,而不是事件:

$('#sel0').on('change', function() { 
    dataTable.columns('.fechas').search(this.value).draw(); 

    $.ajax({ 
     url: '@Url.Action("MethodName","HomePosController")', 
     type: 'POST', 
     cache: false, 
     data: { Selected: $("#sel0").val() }, 
     success: function (data) { 
      // 
     } 
    }); 
}); 

頁面的不刷新

哦,不。這不會發生在AJAX請求中。目前您的success回調爲空,因此頁面上不會發生任何事情。無論你想要發生什麼,都需要放在回調中。

+0

好吧,現在我明白了更多,但是接下來我該如何編輯我的Succes:從我的控制器再次加載頁面觸發另一個actionresult的函數?這是可能的嗎? @David –

+0

@ArturoMartinez:如果您想刷新頁面或以任何方式導航到新頁面,那麼爲什麼要首先使用AJAX?只要使用一個正常的形式。 – David

+0

即時通訊不知道如何使用正常形式你有一個例子嗎? –