2016-11-24 3 views
0

У меня есть datatable, и я добавляю новую строку и отправляю ее в JSP для вставки базы данных. Я получаю следующую ошибку в JSP. В чем проблема с этим кодом.Вставка базы данных Java Script

You have an error in your SQL syntax; check the manual that corresponds to your MySQL 
server version for the right syntax to use near '[object HTMLInputElement]' at line 4] with root cause 

JS - Ajax кода представить JSP по щелчку кнопки Сохранить

function addRow(table,row) 
    { 
     var input = $('input', row); 
     var params = "id="+input[0].value+"&name="+input[1].value+"&title="+input[2].value+"&code="+input[3].value+"&email="+input[4].value+"&band="+input[5].value+"&location="+input[6].value+"&manager="+input[7].value+"&school="+input[8].value+"&major="+input[9].value+"&years="+input[10].value+"&edu="+input[11].value+"&skills="+input[12].value; 
     var settings = { 
        "async": true, 
        "crossDomain": true, 
        "timeout":0, 

        "url": "insertdb.jsp?"+params, 
        "method": "POST", 

        "headers": { 
        "content-type": "application/json", 
        "cache-control": "no-cache" 

        }, 
        "processData": false 
       } 
     $.ajax(settings).done(function (response) { 
       var json = JSON.parse(response); 
       if(json.responseHeader.status == "0") 
       { 
       alertify.success("Sucessfully modified the schema field"); 
       location.reload(); 
       //alertify.set({ delay : 5000 }); 

       } 
       else 
       { 
       alertify.error("Error! Please try again"); 
       } 
        console.log(response); 
       }); 
    } 

МОЕЙ JSP

<sql:update dataSource="${myDS}" var="result"> 
     insert into emp_profile1 (EMPID, NAME, JOB_TITLE, JOB_CODE, EMAIL, BAND, LOCATION, MANAGER, SCHOOL, MAJOR, YEARS_EXP, EDUCATION, SKILLS) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?); 

    <sql:param value="${param.id}" /> 
    <c:out value="${param.name}"></c:out> 
    <sql:param value="${param.name}" /> 
    <sql:param value="${param.title}" /> 
    <sql:param value="${param.code}" /> 
    <sql:param value="${param.email}" /> 
    <sql:param value="${param.band}" /> 
    <sql:param value="${param.location}" /> 
    <sql:param value="${param.manager}" /> 
    <sql:param value="${param.school}" /> 
    <sql:param value="${param.major}" /> 
    <sql:param value="${param.years}" /> 
    <sql:param value="${param.edu}" /> 
    <sql:param value="${param.skills}" /> 
</sql:update> 
response.setContentType("text/html"); 
<c:if test="${result>=1}"> 
response.getWriter().print("{'success': true}"); 

</c:if> 
+0

Был мой ответ полезным ? Затем вы можете принять его и перенести его, нажав на галочку и стрелку вверх с левой стороны. Если у вас все еще есть проблемы, предоставьте дополнительную информацию. –

ответ

0

Сообщение об ошибке SQL дает нам egough информации, где эта проблема может быть:

У вас возникла ошибка в синтаксисе SQL; в руководстве, соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи «[объект HTMLInputElement]» в строке 4] с первопричину

Важная информация заключается в следующем:

'[объект HTMLInputElement]'

Такая строка не должна быть в запросе SQL. Вместо этого должна быть пара имен и значений, подготовленная в виде sql.

Таким образом, проблема заключается в сериализации html-формы. Вы делаете сериализации вручную в строке:

var params = "id="+input[0].value+"&name="+input[1].value+"&title="+input[2].value+"&code="+input[3].value+"&email="+input[4].value+"&band="+input[5].value+"&location="+input[6].value+"&manager="+input[7].value+"&school="+input[8].value+"&major="+input[9].value+"&years="+input[10].value+"&edu="+input[11].value+"&skills="+input[12].value; 

Я хотел бы предложить, чтобы исследовать созданный params по телефону:

console.log(params); 

Еще лучше было бы использовать jQuery serialize()

Смежные вопросы