我在使用 FormData 时遇到问题,它在几天前工作正常,但现在不起作用,它会提交除提交按钮之外的所有输入。这是我的登录表单。
<form action="" method="post" name="login_user">
<label for="username">Username/e-mail <span class="error" id="user-error"></span></label>
<input type="text" name="username" id="username" required>
<br>
<label for="passwd">Password <span class="error" id="passwd-error"></span></label>
<input type="password" name="passwd" id="passwd" required>
<br>
<p><input type="checkbox" checked name="remember"> Remember me <span class="forgot"><a href="<?php echo SITE_URL; ?>/reset">Forgotten password</a></span> </p>
<input type="submit" id="login" value="Login" name="login">
<p>Don't have an account? <a href="<?php echo SITE_URL; ?>/register/">Sign up</a></p>
</form>
JS 登录,使用 MVC。
//ajax login
var login = document.forms.namedItem('login_user');
if (login) {
login.addEventListener('submit', function (e) {
if (validatePassword('passwd', 'passwd-error')) {
var data = new FormData(login);
var userlogin = new XMLHttpRequest();
var btn = document.getElementById('login');
btn.value = 'Login, Please wait...';
userlogin.open('POST', url + 'login/login_user_ajax', true);
userlogin.onload = function (event) {
if (userlogin.status == 200) {
var result = JSON.parse(userlogin.responseText);
if (result.results == 'success.') {
alert('logged in'); //change this later
} else {
document.getElementById('cred-error').innerHTML = result.results;
}
btn.value = 'Login';
}
};
userlogin.send(data);
}
e.preventDefault();
}, false);
我的 Controller 中的登录方法,未检测到按钮。
public function login_user_ajax() {
$this->login_user(1);
}
private function login_user($ajax = '')
{
if (filter_has_var(INPUT_POST, 'login')) {
$new_user = $this->model('User');
$new_user->setDb(Controller::getDb());
$new_user->set_site(SITE_URL);
$user = trim(filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING));
$passwd = trim(filter_input(INPUT_POST, 'passwd', FILTER_SANITIZE_STRING));
if ($new_user->login($user, $passwd)) {
if ($ajax) {
$site_data['results'] = 'success.';
echo json_encode($site_data);
return true;
}else {
$this->redirect(SITE_URL . '/edit');
}
} else {
if (!$ajax){
return 'The username or password is incorrect.';
}else {
$site_data['results'] = 'The username or password is incorrect.';
echo json_encode($site_data);
return false;
}
}
}else {
print_r($_POST);
}
}
我在 print_r $_POST 时得到这个,没有按钮。
最佳答案
因为您实际上并没有使用默认提交(而是使用 ajax),所以您需要自己添加点击按钮。一种简单的方法是使用您希望按钮具有的名称向表单添加隐藏输入,然后让表单中的所有按钮都使用此点击处理程序:
function clickHandler() {
this.form.theHiddenInput.value = this.value;
}
这样,如果按钮用于提交表单,按钮的处理程序会在提交之前设置隐藏输入的值。
关于javascript - FormData 不包含按钮 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40202168/
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案
我的Gallery模型中有以下查询:media_items.includes(:photo,:video).rank(:position_in_gallery)我的图库模型有_许多媒体项,每个都有一个照片或视频关联。到目前为止,一切正常。它返回所有media_items包括它们的photo或video关联,由media_item的position_in_gallery属性排序。但是我现在需要将此查询返回的照片限制为仅具有is_processing属性的照片,即nil。是否可以进行相同的查询,但条件是返回的照片等同于:.where(photo:'photo.is_processingIS
-if!request.path_info.include?'A'%{:id=>'A'}"Text"-else"Text"“文本”写了两次。我怎样才能只写一次并同时检查path_info是否包含“A”? 最佳答案 有两种方法可以做到这一点。使用部分,或使用content_forblock:如果“文本”较长,或者是一个重要的子树,您可以将其提取到一个部分。这会使您的代码变干一点。在给出的示例中,这似乎有点矫枉过正。在这种情况下更好的方法是使用content_forblock,如下所示:-if!request.path_info.inc
Ocra无法处理需要“tk”的应用程序require'tk'puts'nope'用奥克拉http://github.com/larsch/ocra不起作用(如链接中的一个问题所述)问题:https://github.com/larsch/ocra/issues/29(Ocra是1.9的"new"rubyscript2exe,本质上它用于将rb脚本部署为可执行文件)唯一的问题似乎是缺少tcl的DLL文件我不认为这是一个问题据我所知,问题是缺少tk的DLL文件如果它们是已知的,则可以在执行ocra时将它们包括在内有没有办法知道tk工作所需的DLL依赖项? 最佳答
我希望用户从一个模型的三个选项中选择一个。即我有一个模型视频,可以被评为正面/负面/未知目前我有三列bool值(pos/neg/unknown)。这是处理这种情况的最佳方式吗?为此,表单应该是什么样的?目前我有类似的东西但显然它允许多项选择,而我试图将它限制为只有一个..怎么办? 最佳答案 如果要使用字符串列,让我们说rating。然后在你的表单中:#...#...它只允许一个选择编辑完全相同但使用radio_button_tag: 关于ruby-on-rails-Rails单选按钮-模
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
我正在使用DMOZ的listofurltopics,其中包含一些具有包含下划线的主机名的url。例如:608609TheOuterHeaven610InformationandimagegalleryofMcFarlane'sactionfiguresforTrigun,Akira,TenchiMuyoandotherJapaneseSci-Fianimations.611Top/Arts/Animation/Anime/Collectibles/Models_and_Figures/Action_Figures612虽然此url可以在网络浏览器中使用(或者至少在我的浏览器中可以使用:
我有一个数组:array=['Footballs','Baseball','football','Soccer']而且我需要计算看到Football或Baseball的次数,无论大小写和复数形式如何。这是我尝试做的,但没有成功:array.count{|x|x.downcase.include?'football'||x.downcase.include?'baseball'}编写这段代码的正确或更好的方法是什么?我正在寻找3作为答案。 最佳答案 我会将count与一个block结合使用,该block根据与您正在寻找的约束相匹配的正
基本上,我试图在用户单击链接(或按钮或某种类型的交互元素)时执行Rails方法。我试着把它放在View中:但这似乎没有用。它最终只是在用户甚至没有点击“添加”链接的情况下调用该函数。我也用link_to试过了,但也没用。我开始认为没有一种干净的方法可以做到这一点。无论如何,感谢您的帮助。附言。我在ApplicationController中定义了该方法,它是一个辅助方法。 最佳答案 View和Controller是相互独立的。为了使链接在Controller内执行函数调用,您需要对应用程序中的端点执行ajax调用。该路由应调用rub