所以我似乎无法将这些数据填充到我的选择菜单中。我从ajax调用中得到了回复,但.html
调用似乎忽略了它。有趣的是,我尝试了success:
和.done
,但这些实际上是封锁的,并且根本没有开火。
$ ->
$('#vehicle-query #make').on 'change', ->
$.ajax
type: 'get'
dataType: 'script'
url: '/vehicles/model_query'
data:
make: $(this).val()
.complete (opt) ->
$('#vehicle-query #model').html opt
$('#vehicle-query #model').prop 'disabled', false
$('#vehicle-query #year').val ''
$('#vehicle-query #year').prop 'disabled', true
$('#vehicle-query #style').val ''
$('#vehicle-query #style').prop 'disabled', true
另一个注意事项,我在Rails中发出此请求,并从控制器响应:
render partial: 'vehicles/query_menu',
object: @models,
as: :options,
locals: {select: 'Model'},
layout: false
并从haml文件构建响应。
证明我得到了我想要的回复:
答案 0 :(得分:0)
jQuery ajax complete
根据文档:
该函数传递两个参数:jqXHR(在jQuery 1.4.x中, XMLHTTPRequest)对象和分类状态的字符串 请求(“成功”,“未修改”,“错误”,“超时”,“中止”或 “parsererror”)。
所以你没有直接得到html响应。您的案例中的第一个参数opt
将是jqXHR对象。致电opt.responseText
获取HTML。
答案 1 :(得分:0)
<强>的Ajax 强>
您遇到的主要问题是success
的{{1}}功能不起作用
我最近才知道ajax
和success
之间的区别与响应类型无关;这与error
请求是否达到其目标
有趣的是ajax
适合您,因为根据.complete
提供的参考,它会捕获Ahmed
和success
回调 - 向我建议您对ajax的响应或请求有疑问
-
首先,我会改变你的JS(以确保它可以与Turbolinks一起使用):
error
其次,仅仅因为你的#app/assets/javascripts/application.js
$(document).on 'change', '#vehicle-query #make' ->
$.ajax
type: 'get'
dataType: 'script'
url: '/vehicles/model_query'
data:
make: $(this).val()
success: (data) ->
alert data
$('#vehicle-query #model').html data
$('#vehicle-query #model').prop 'disabled', false
$('#vehicle-query #year').val ''
$('#vehicle-query #year').prop 'disabled', true
$('#vehicle-query #style').val ''
$('#vehicle-query #style').prop 'disabled', true
方法不起作用,并不意味着事情已经无法修复。它只是意味着你可能没有调用正确的功能。
由于您尝试填充.html
输入,我最初对<select>
函数持怀疑态度。但是,当我在JSFiddle上测试时,我发现它是一个有效的用例。
所以我实际上看看.html
所说的内容 - 很可能是你没有调用正确的Ahmed
回调。尝试使用上面的data
函数,或者您可能希望查看引用complete
方法发送的不同数据对象:
success
这意味着您将从中受益:
Function( Event event, jqXHR jqXHR, PlainObject ajaxOptions )