2016-06-15 56 views
0

所以我在客戶端頁面上訪問服務器並執行了AJAX調用。但是,對於每一個提交我得到2插入語句。我無法弄清楚第二次插入是從哪裏來的。也許一組新的眼睛可以揭示它。爲什麼我的SQL插入複製

表格(.blade.php):

{!! Form::open(array('action'=>'[email protected]')) !!} 
{!! Form::label('projectNameText','Project Name: ') !!} 
{!! Form::text('projectNameText',null,array('name'=>'projectNameText')) !!} 
{!! Form::label('projectAssigneeText','Project Assignee') !!} 
{!! Form::text('projectAssigneeText',null,array('name'=>'projectAssigneeText')) !!} 
{!! Form::submit('Submit',array('id'=>'submitButton')) !!} 
{!! Form::close() !!} 

PHP控制器:

$projectName = $request->input('projectNameText'); 
$projectAssignee = $request->input('projectAssigneeText'); 
$date = date("Y-m-d"); 
$db = $this->openDatabaseDefault(); 
$sql = "INSERT INTO database.table(PRJ_ProjectId,PRJ_ProjectName,PRJ_ProjectAssignee,PRJ_ProjectStart, 
      PRJ_ProjectLastActive,PRJ_ProjectStatus,PRJ_ProjectTotalUsers,PRJ_EmailViews,PRJ_WebsiteViews, 
      PRJ_ProjectTotalReports) VALUES (null,'$projectName','$projectAssignee','$date','$date','Inactive',0,0,0,0);"; 
if(!$projects = $db->query($sql)) { 
     echo "Sorry, the website is experiencing technical difficulties."; 
     echo "Error: Our query failed to execute and here is why: \n"; 
     echo "Query: " . $sql . "\n"; 
     echo "Errno: " . $db->errno . "\n"; 
     echo "Error: " . $db->error . "\n"; 
     exit; 
} 
$db->close(); 
return redirect()->to('http://localhost:8888/generateEmails'); 

AJAX:

$('document').ready(function() { 
    $('#submitButton').click(function(e) { 
     $.ajaxSetup({ 
      headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') } 
     }); 
     console.log("clicked"); 
     var projectName = $('#projectNameText').val(); 
     var projectAssignee = $('#projectAssigneeText').val(); 
     $.ajax({ 
      method: "POST", 
      //url: "http://localhost:8888/projects/create", 
      data: {projectNameText: projectName, projectAssigneeText: projectAssignee} 
     }) 
    }); 
}); 

任何在此點認識。

+0

在JS控制檯多少點擊消息你每次點擊看? 1或2? – Shadow

+0

只有一個點擊通過。有一次,我甚至在控制器上發佈了一條Else語句,以查看If語句是否雙重執行。它只回響一次。 – Trojan404

+0

你調用'return redirect() - >('http:// localhost:8888/generateEmails');'在ajax相關的php文件中?對我來說這部分看起來很奇怪 – Alex

回答

0

感謝亞歷克斯的概念阿賈克斯變化。原因是PHP重定向導致我的方法在重定向之前再次觸發。不知道爲什麼,但通過將重定向推入AJAX成功函數,它修復了我的重複插入。

修訂AJAX:

$.ajax({ 
    method: "POST", 
    data: {projectNameText: projectName, projectAssigneeText: projectAssignee}, 
    success: function() { 
     window.location.replace("http://localhost:8888/generateEmails"); 
    }, 
    error: function(xhr,status,error) { 
     alert('Unable to create new project.'); 
     console.log("xhr: " + xhr); 
     console.log('status: ' + status); 
     console.log('error: ' + error); 
    } 
});