2012-06-11 45 views
0

我的視圖有一個捕獲用戶掃描的單個文本框。然後掃描將被傳遞,而不需要任何其他用戶操作到另一個操作,然後再使用掃描的數據來完成交易。到目前爲止,文本框被掃描填充,並立即重定向,但沒有文本框的內容。這就是我所擁有的;Javascript和keyup將數據傳遞給控制器​​

查看:

<input id="thisText" class="largetext" name="txtScanLabel" onkeyup="myKeyUp" /> 

和:

<script type="text/javascript"> 
    var tResults = "Test"; 

     $(function() { 
      $('input.largetext').focus(); 
     }); 

     $(function() { 
      $("#thisText").keyup(myKeyUp); 
     }); 

     function myKeyUp(eventInstance) { 
      var myURL = '@Url.Action("ScanResults", "Home")'; 
      window.location.href = myURL + '?tResults' + encodeURIComponent(tResults); 
     } 

    </script> 

控制器:

public ActionResult ScanResults(string tResults) 
    { 

     var test = tResults;      

     return RedirectToAction("Success"); 

    } 
+1

原因。多個「就緒」處理程序 – Rafay

+0

是t控制器操作中的結果null? –

+0

@ 3nigma,這並不重要.jQuery足夠智能,可以將它們全部合併到一個處理程序中當DOM準備就緒時執行。 –

回答

2

您已經悄悄訂閱使用jQuery的.keyup事件處理程序,但你已經使用了onkeyup屬性在你的DOM。你不需要做那兩件事。使用jQuery就足夠了。因此,通過清理您的標記開始:

<input id="thisText" class="largetext" name="txtScanLabel" /> 

而且你已經硬編碼在JavaScript中tResults價值Test。而不是使用全局變量此硬編碼值(你可以擺脫),你應該閱讀文本框中的值:

function myKeyUp(eventInstance) { 
    var myURL = '@Url.Action("ScanResults", "Home")'; 
    var value = $(this).val(); 
    window.location.href = myURL + '?tResults=' + encodeURIComponent(value); 
} 

注意使用window.location.href將立即重定向到ScanResults控制器動作,當用戶類型進入輸入字段。您可能想要使用AJAX:

function myKeyUp(eventInstance) { 
    var myURL = '@Url.Action("ScanResults", "Home")'; 
    $.ajax({ 
     url: myURL, 
     type: 'POST', 
     data: { tResults: $(this).val() }, 
     success: function(result) { 
      // do something with the result returned by the controller action 
     } 
    }); 
} 
+0

我開始使用AJAX,但它也無法正常工作。我刪除了硬編碼的測試值,但我仍然沒有看到任何返回到ScanResults控制器操作的數據。 – SandSnark

+0

您是否注意到'tResults'查詢字符串參數後面缺少'='符號,您忘記了:''?tResults =''。 –

+0

啊,堅果。這正是它的原因。抱歉浪費大家的時間! – SandSnark

0

您沒有包含[HttpPost]控制器中的屬性Action。

+0

他正在重定向到它('window.location.href')。重定向意味着GET動詞,而不是POST。如果他用'[HttpPost]'屬性裝飾控制器動作,他將永遠無法重定向到它。 –

+0

但他想要傳遞數據到該URL.is它有可能與GET? –

+0

當然 - >使用查詢字符串參數。 –

0

您需要這也許是你的「測試不會工作,因爲它現在是:

 window.location.href = myURL + '?tResults' + encodeURIComponent(tResults); 

變化

 tResults = $('#thisText').val(); 
     window.location.href = myURL + '?tResults=' + encodeURIComponent(tResults); 

不要忘了重要的等號在那裏

相關問題