使用coffeescript/javascript将数据填充到存储过程的下拉列表中
我不熟悉咖啡脚本。我正在构建一个应用程序,它使用coffeescript来构建和呈现html页面。我正在使用VisualStudio构建应用程序。我使用SQL Server 2012创建了一个数据库和一些存储过程 我的问题是如何将数据填充到select元素或下拉列表中,您可以从SQLServer上实现的存储过程中调用它。从我所读到的内容来看,不可能从javascript调用存储过程。我该如何实施这一点。我试图遵循数据驱动的设计,不想手动填写数组中的选项。我想它的下拉列表时,自动填写页面加载。我试图通过控制器中定义的url进行ajax调用和请求。但它似乎不起作用。有什么帮助吗? 我没有包含代码的原因是因为我试图使用OOP模式,而这是一个很大的代码。但是,对于代码片段,我可以提供我的coffeescript代码,如下所示:使用coffeescript/javascript将数据填充到存储过程的下拉列表中,javascript,asp.net,sql-server,stored-procedures,coffeescript,Javascript,Asp.net,Sql Server,Stored Procedures,Coffeescript,我不熟悉咖啡脚本。我正在构建一个应用程序,它使用coffeescript来构建和呈现html页面。我正在使用VisualStudio构建应用程序。我使用SQL Server 2012创建了一个数据库和一些存储过程 我的问题是如何将数据填充到select元素或下拉列表中,您可以从SQLServer上实现的存储过程中调用它。从我所读到的内容来看,不可能从javascript调用存储过程。我该如何实施这一点。我试图遵循数据驱动的设计,不想手动填写数组中的选项。我想它的下拉列表时,自动填写页面加载。我试
class NewInput
constructor: (arg)->
@type = arg.type
@remove = arg.remove
@onChangeHook = arg.onChange
@data = arg.data ? {}
@setInputs()
setInputs: ->
fields = {}
fields.type = new SelectInput
name: "Type"
opts: ["All", "TV", "Computer", "Phone"]
get: => @data.ModelType
set: (val)=>
@data.ModelType = val
@onChange()
onChange: ->
if @validated
@valid()
@onChangeHook()
valid: ->
@validated = true
# Logic to check if the fields are blank or not etc.
这里,SelectInput是我创建的一个新类,用于使用coffeescript创建下拉列表。正如我提到的,我没有使用HTML来创建页面。相反,我使用coffeescript创建元素
class SelectInput
@draw: (arg)->
new SelectInput(arg).draw()
constructor: (arg)->
@name = arg.name
@opts = arg.opts
@get = arg.get
@set = arg.set
draw: ->
val = @get()
select = Crt.ce "select"
select.className = "quote-select"
select.appendChild @genOpt
name: @name
dimmed: true
for opt in @opts
select.appendChild @genOpt
name: opt
selected:
opt == val
@$select = $ select
@setEvents()
select
setEvents: ->
@$select.change => @change()
change: ->
val = @$select.val()
val = null if val == @name
@set val
genOpt: (arg)->
name = arg.name
selected = arg.selected
dimmed = arg.dimmed
opt = Crt.ce "option"
opt.className = "quote-select-option"
opt.className += " dimmed" if dimmed
Crt.atn opt, name
opt.value = name
opt.setAttribute "selected", "selected" if selected
opt
isBlank: ->
blank = @$select.val() == @name
if blank
@$select.addClass "invalid"
else
@$select.removeClass "invalid"
blank
forceHL: (bool)->
return if !@$select
if bool
@$select.addClass "invalid"
else
@$select.removeClass "invalid"
上面,Crt.ce代表createElement,Crt.atn代表appendTextNode。dimmed是在css中声明的一个类,用于将选择名称保持为与选项不同的颜色
所以,我的问题是如何使用存储过程填充opt数组中的选项。目前,我正在硬编码我不想要的阵列,它不是数据驱动的。希望这对我如何解决这个问题有所帮助。你是对的,你不能从基于浏览器的javascript访问SQL实例,你需要一个服务器端语言。听起来在你对问题的理解和解决方案之间有很多问题需要回答。可能从谷歌搜索“asp.net web framework”或“节点web framework”开始。使用meteor.js这样的web框架可能会使这条线变得模糊一些。投票结束,因为这太模糊了。@JedSchneider好吧,我用coffeescript作为前端。C表示中间层服务器,SQL Server表示数据库。问题是我没有使用纯html来创建select元素,因为我可以使用数据绑定填充选项,所以创建select元素更容易。但是使用coffeescript,我已经为option的值创建了一个数组,这正是我试图填充的。您可以通过html模板解决方案呈现select选项,或者如果希望动态填充它们,可以通过ajax请求它们。ajax调用将需要在您的服务器上安装一个和端点。这些都不是特定于coffeescript的。@JedSchneider正如我在问题中提到的,我已经尝试实现ajax调用,并且还定义了一个端点。在控制器类中也实现了这一点。但它似乎不起作用。我问咖啡脚本的原因是,如果有不同的方法来做同样的事情。与JavaScript相比,Coffeescript提供了一些优势。因此,与之相关的ask.coffeescript不提供任何特定的库扩展。它只为克服javascript中常见的开发模式提供语法支持。我可能会先发布你的代码,这样我们就可以知道为什么它不起作用了。这通常是SO工作得最好的方式。