2014-09-05 2 views
0

나는 아약스의 걸림 호출 내가 코드 :) 내가 때 호출에도 오류 경고가 계속Ajax 호출은 항상도 성공적으로 호출

의 기본 평화와 사투를 벌인거야 얻으려고에 오류를 반환 성공할 것으로 보인다. 코드를 디버그하려고 시도하고 일부 중단 점을 추가하고 done-function이 실행된다는 것을 알았습니다. 양식 정보가 기록되고 PHP 스크립트에서 문자열이 반환됩니다. 잠시 동안 텍스트가 나타나지만 done-function 후에 사라집니다. 디버깅하는 동안 오류 메시지가 표시되지 않습니다. 스크립트를 정상적으로 실행하는 동안에 만 나타납니다.

도움을 주시면 감사하겠습니다.

<div id="formDiv"> 
<form method="post" id="form"> 
<label for="title">Title: </label> 
<input type="text" name="title" id="title" /> 
<label for="composer">Composer: </label> 
<input type="text" name="composer" id="composer" /> 
<label for="link">Link: </label> 
<input type="text" name="link" id="link" /> 
<label for="description">Description: </label> 
<input type="text" name="description" id="description" /> 
<input type="submit"> 
</div> 

<div id="outerDiv"> 
    <p id="p"></p> 
</div> 

<script> 
$("#form").submit(function(){ 
    var postData = $(this).serializeArray(); 
    $.ajax({ 
    url: "test.php", 
    type: "POST", 
    data: postData, 
    dataType: "text"  
    }) 
    .done(function(data){ 
     $("#p").text(data); 
    }) 
    .fail(function(){ 
     alert("Error!"); 
    }); 
    }); 

</script> 

test.php

<?php 
$dbc = mysqli_connect('localhost', 'root', '', 'db'); 
if ($dbc->connect_error) { 
die('Connect Error: ' . $dbc->connect_error); 
} 

$title = $_POST['title']; 
$composer = $_POST['composer']; 
$link = $_POST['link']; 
$description= $_POST['description']; 

$query = "INSERT INTO table(Titel, Componist, Link, Description) VALUES ('$title', '$composer', '$link', '$description')"; 
mysqli_query($dbc, $query); 


$resultquery = mysqli_query($dbc,"SELECT * FROM table"); 
$result = ""; 
while($row = mysqli_fetch_assoc($resultquery)){ 
    $result .= $row["Titel"]." | ".$row["Componist"]." | ".$row["Link"]." | ".$row["Description"]."\n"; 
} 

echo $result; 
mysqli_close($dbc); 

?> 
+0

요청/응답 프로세스가 브라우저의 콘솔에서 관찰 되었습니까? –

+0

당신은 SQL 주입 공격에 취약합니다. –

+0

SQL 주입 공격 : 알아요. 나는 단순한 기능을 시험해보고있다. –

답변

-1

successerror 콜백보다는 done 및 fail`를 사용하여 다음 코드를 사용해보십시오.

$("#form").submit(function(){ 
    var postData = $(this).serialize(); 
    $.ajax({ 
     url: "test.php", 
     type: "POST", 
     data: postData, 
     dataType: "text", 
     success: function(data){ 
      $('#p').text(data); 
     }, 
     error: function(){ 
      alert("Error!"); 
     } 
}); 
+0

이것이 제가 작성한 첫 번째 방법이었습니다. 같은 결과. –

+0

"** deprecation 공지 사항 : ** jqXHR.success(), jqXHR.error() 및 jqXHR.complete() 콜백은 jQuery 1.8에서 사용되지 않을 예정이며, 최종 제거를 위해 코드를 준비하려면 jqXHR.done), jqXHR.fail() 및 jqXHR.always() 대신. " - http://api.jquery.com/jquery.ajax/ –

1

경고 대신 console.log를 사용해 볼 수 있습니다. 또한

funcation fail(jqXHR, textStatus, errorThrown) { 
    console.log("textStatus: " + textStatus); 
    console.log("errorThrown: " + errorThrown); 
} 
+0

이것은 textStatus : error 및 errorThrown : blank : s를 제공합니다. –

+0

그런 다음 HTTP 트래픽을 살펴보십시오. 최신 브라우저 나 Firebug for Firefox 같은 확장 프로그램을 사용하여 개발자 도구로 확인할 수 있습니다. 응답의 HTTP 상태 코드가 무엇인지 구체적으로 살펴보십시오. – MirMasej

+0

상태가 200 OK라고 표시됩니다. POST의 스크린 샷을 만들었습니다 : http://i.imgur.com/G1oPm2W.png. –

0

내가 제대로

INSERT INTO db(Titel, Componist, Link, Description) 

철자가 제목에 잘못 당신이 당신의 필드 이름을 작성하고 테이블 이름 여부를 의심 서버에서 유래를 알기 위해 faile 함수에 매개 변수를 추가 할 수 있습니다, 데이터를 테이블에 삽입하지 않으면 db에 삽입합니다. 이것은 잘못된 것입니다. 내 양식 태그

<form method="post" id="form" action="test.php"> 

에 action 속성을 추가하고 양식에로 preventDefault()를 추가 한

를이 다른 많은 것들을 시도 후 테이블 이름

+0

db가 테이블 이름 일 수 있으며 titel이 영어가 아닐 수도 있습니다. 특히 이들이 출력에서 ​​반복되기 때문에. –

+0

@ 카이 - 나는 그가 실수로 그것을했다고 생각했다. 예 필드 이름은 여러 곳에서 반복되었으며 다른 언어 일 수도 있지만 한 점을 지워 주셔서 감사합니다. 즉 db는 저에게 테이블 이름이 될 수 있습니다. Tks 남자 – gihanmu

+0

네, 죄송합니다. 질문을 게시하는 동안 일부 이름을 변경했습니다. 그것은 실제로 테이블이어야합니다. –

0

를 추가 작동하는 것 같다 오류 처리를 변경했습니다.

<script> 
$("#form").submit(function(e){ 
    var postData = $(this).serializeArray(); 
    $.ajax({ 
    url: "test.php", 
    type: "POST", 
    data: postData, 
    dataType: "text"  
    }) 
    .error(function(jqXHR, textStatus, errorThrown) { console.log(errorThrown); }) 
    .done(function(data){ 
     $("#p").text(data); 
    }) 
    e.preventDefault(); 
    }); 

</script> 

그렇다면이 작업을 수행하는 데 필요한 작업 속성이 왜입니까?

+0

필요하지 않습니다. 거짓 긍정. 대부분의 다른 변경 사항 중 하나가 문제를 해결했습니다. –

관련 문제