2015-10-16 2 views
0

У меня есть база данных MySQL, к которой я обращаюсь через PHP. Я начал с разработки и уточнения моего PHP-кода для доступа к этой базе данных с подготовленными операторами SQL. Я отправил POST-запросы для проверки кода (через Python) и вернул ожидаемые результаты.PHP и AJAX не работают

Однако я не могу это сделать с помощью функции AJAX JQuery. Мне кажется, что у моего кода могут быть недостатки, поскольку я никогда раньше не использовал их в сочетании с MySQL. Скажите, пожалуйста, где я ошибаюсь.

Моя ошибка заключается в том, что когда я запускаю свой код, я не получаю вывод в консоли JavaScript или на странице. Единственный способ, которым я знаю, что моя функция отправки даже называется, - это успех заявления alert("called").

HTML и JQuery:

<html> 
<head> 
    <title>Login form</title> 
    <link rel="stylesheet" href="css/index.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
</head> 
<body> 
    <script type="text/javascript"> 
     function sub(form){ 
      alert("called"); 
      $form = $(form); 
      $input = $form.find("[name='searchword']"); 

      $.ajax({ 
       url: "php/searchOld.php", 
       dataType: "application/json", 
       type: "POST", 
       data: "searchword="+$input.val(), 
       error: function(xhr, status, error) { 
         var err = eval("(" + xhr.responseText + ")"); 
         alert(err.Message); 
       }, 
       success: function(){ 
        alert("transaction succeeded"); 
        var arr = $.map(obj, function(el){ 
         return el; 
        }); 
        printResults(arr); 

       } 
      }); 
     } 

     function printResults(arr){ 
      for(var title of arr){ 
       $pTag = $("<p></p>"); 
       $pTag.append("<b>"+title+"</b>"); 
       $("#titles").append($pTag); 
      } 
     } 

    </script> 

    <form id = "searchForm" method="POST" onsubmit = "sub(this)"> 
     Enter the searchword: <input type="text" name = "searchword"><br> 
     <input type="submit"> 
    </form> 

    <br><br> 

    <div id = "titles"> 

    </div> 



</body> 
</html> 

PHP:

<?php 
    include("connect.php"); 
    $search = "%".$_POST['searchword']."%"; 



    $query = mysqli_prepare($link,"SELECT Title FROM `right` WHERE Title LIKE ?"); 
    if(!$query){ 
     echo mysqli_error($link); 
    } 

    mysqli_stmt_bind_param($query, "s", $search); 

    $query->execute(); 
    $query->bind_result($title); 
    $data = array(); 
    while($query->fetch()){ 
     array_push($data, $title); 
    } 

    echo json_encode($data); 


?> 
+0

Ошибка jQuery ajax, а также скрипт php также имеет ошибки. Сначала разрешите файл php. Прокомментируйте '$ search ="% ". $ _ POST ['searchword']."% ";' Строка и жесткий код '$ search =" something "}, затем запустите скрипт php напрямую и посмотрите, что такое вывод. Если он показывает кодированный json массив заголовков, то дайте мне знать. – TipuZaynSultan

ответ

0

Прежде всего, вам нужно вернуть ложную внутреннюю функцию следующим образом:

function sub(form){ 
    ....... 
    ....... 
    return false; // to prevent normal default behavior of form(page refresh) 
} 

И внутри успеха функции блока необходимости передать параметр, содержащий результат obj с серверной стороны, так:

success: function(obj){ 
        ^------------------ here 
    alert("transaction succeeded"); 
    var arr = $.map(obj, function(el){ 
       return el; 
     }); 
    printResults(arr); 
} 

Или просто возвращают onsubmit inline так:

onsubmit="sub(this);return false;" 
+0

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

+0

Я попробую это, и для текстового файла я использовал неправильную функцию: P. Ошибка новичков, извините – ytpillai

+0

ОК, спасибо большое, это сработало. Теперь у меня есть куча ошибок JavaScript, с которыми приходится иметь дело, но, по крайней мере, я знаю, что исправить. – ytpillai

0

Вот ваше решение:

HTML

<form id = "searchForm" method="POST" onsubmit = "return sub(this)"> 
    Enter the searchword: <input type="text" name = "searchword"><br> 
    <input type="submit"> 
</form> 

JS

function sub(form) { 
    $form = $(form); 
    $input = $form.find("[name='searchword']"); 

    $.ajax({ 
     url: "php/searchOld.php", 
     dataType: "json", 
     type: "POST", 
     data: "searchword="+$input.val(), 
     error: function(xhr, status, error) { 
      console.log(status+'---'+error); 
     }, 
     success: function(msg) { 
      alert("transaction succeeded"); 
      var arr = $.map(msg, function(el) { 
       return el; 
      }); 
      printResults(arr); 

     } 
    }); 
    return false; 
} 

function printResults(arr) { 
    for(var title of arr) { 
     $pTag = $("<p></p>"); 
     $pTag.append("<b>"+title+"</b>"); 
     $("#titles").append($pTag); 
    } 
} 
Смежные вопросы