Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 表单提交发生两次(使用jQuery提示符)_Javascript_Php_Jquery - Fatal编程技术网

Javascript 表单提交发生两次(使用jQuery提示符)

Javascript 表单提交发生两次(使用jQuery提示符),javascript,php,jquery,Javascript,Php,Jquery,我的问题: 我在表单中有一个按钮,当按下该按钮时,加载一个提示框,接受输入,然后将该输入作为值分配给隐藏的表单文本框,然后提交表单。然而,这是提交两次。这样做的想法是使用JavaScript提示符并将其作为暂停作业的原因输入 我的代码 表格: 控制器逻辑: if(isset($_POST['pause_job'])){ $this->jobs_model->pauseJob($_POST,$job_id); } 型号/功能: public function pauseJob($

我的问题:

我在表单中有一个按钮,当按下该按钮时,加载一个提示框,接受输入,然后将该输入作为值分配给隐藏的表单文本框,然后提交表单。然而,这是提交两次。这样做的想法是使用JavaScript提示符并将其作为暂停作业的原因输入

我的代码

表格:

控制器逻辑:

if(isset($_POST['pause_job'])){
  $this->jobs_model->pauseJob($_POST,$job_id);
}
型号/功能:

public function pauseJob($data,$job_id) {
    $data = $this->escapeArray($data);
    extract($data);
    $today = date('Y-m-d H:i:s');
    $sql = "INSERT INTO job_notes (job_id,note,note_date,note_user) VALUES ('$job_id','$note','$today','$note_user')";
    $this->query($sql);
}
(请注意,我知道提取和转义字符串(而不是使用绑定参数)的缺陷,这是旧代码,这些问题将单独解决,我已经测试过,每个变量都将传递给函数fine)

结果:

在数据库中,查询被提交了两次(请参见下面的屏幕截图,并原谅对员工姓名的错误编辑)

除了第一次提交的日期和时间外,数据都是正确的(我猜提交的数据是错误的)

我希望实现的结果:

基本上,该函数正在工作,只是它提交了两次查询,第一次提交显然是不正确的,因为它没有日期时间。我想要的是一个提交与图片中的第二行一样的正确日期时间。我的主要猜测是表单正在提交,我的jQuery脚本正在再次提交表单,但由于我是jQuery新手,我不知道。另外,如果函数中定义了日期时间,为什么它不能正确提交该部分,如果函数加载两次,那么日期肯定会一直存在?

试试这个

$(“#表格按钮暂停”)。在('click',function()上{
var status=prompt(“请指定暂停作业的原因”);
如果(状态){
$('原因').val(状态);
$(“#暂停表格”).submit();
}否则{
location.reload();
}
})

实际上,它并没有提交两次。在任何情况下都会提交表单。即使您使用
e.preventDefault()
位置.重新加载()

这是您当前的示例:

$(函数(){
$(“#暂停表格”)。提交(功能(e){
var status=prompt(“请指定暂停作业的原因”);
如果(状态){
$('原因').val(状态);
console.log('表格提交正确');
}else if(状态===null){
e、 预防默认值();
location.reload();
log('状态为空,但表单已提交');
}
});
});


好的,我移动了它,现在它根本没有提交。然后是否需要指定
$(“#暂停表格”).submit()在函数中?您的脚本对打开。在E.PrimeDebug()中,您也应该考虑使用<代码> MySqLII< <代码>或<代码> PDO</代码> API,而不是与E.StestRealTeaPrimeType()连接的ValueStices。RiggsFolly我知道这一点,正如稍后将要解决的问题中所述,这都是在本地环境中进行的,稍后我将切换到params。我已移动e.preventDefault();在提示之前,此操作完全停止了功能的工作,并将e.stopImmediatePropagation()放入;也没有帮助,再次导致功能停止工作。完美!非常感谢。
if(isset($_POST['pause_job'])){
  $this->jobs_model->pauseJob($_POST,$job_id);
}
public function pauseJob($data,$job_id) {
    $data = $this->escapeArray($data);
    extract($data);
    $today = date('Y-m-d H:i:s');
    $sql = "INSERT INTO job_notes (job_id,note,note_date,note_user) VALUES ('$job_id','$note','$today','$note_user')";
    $this->query($sql);
}