我在我的Rails应用程序中使用ajax。在我的应用程序中我有
$('#request_name').on('focusout', function () {
var clientName = $(this).val();
$.ajax({
url: "/requests/autofill/"+clientName,
type: "GET",
contentType: 'text/javascript'
});

所以我发送ajax请求来请求控制器动作自动填充。
自动填充方法:
def autofill
@client = Client.where("name=?",params[:name]).take
respond_to do |format|
format.js
format.html
end
end

alert("hello");
$('#request_mobile").val('hi there');

alert("hello");
$('#request_mobile").val('hi there');

但没有任何反应,甚至警报也没有启动。我不知道我做错了什么?
答案 0 :(得分:1)
我不认为我完全理解这里出了什么问题,但我可以看到一些方法来更接近理解问题。
首先,我相信您最好使用$.get
代替$.ajax
。设置起来有点复杂。
第二件事 - 您实际上并不需要设置中的contentType
参数,因为它与返回数据的类型无关,而是与您的数据类型有关。重新发送请求。响应数据类型在dataType
参数中设置。
第三件事,即使dataType
设置为script
,我也不确定它是否会被执行,所以最好的方法是手动执行,如果你是100确定您的安全。
最后,这应该是什么。
$('#request_name').on('focusout', function () {
var clientName = $(this).val();
$.get("/requests/autofill/"+clientName, function(data) {
eval(data);
}
);
答案 1 :(得分:0)
问题出在您的客户端。当它收到Ajax响应时,它不会以javascript的形式执行它。它正在以文本形式执行它。
添加返回false;在ajax之后
$('#request_name').on('focusout', function () {
var clientName = $(this).val();
$.ajax({
url: "/requests/autofill/"+clientName,
type: "GET",
contentType: 'text/javascript'
});
return false;
});