2015-09-14 2 views
1

Я создаю кросс-платформенное приложение с использованием HTML, CSS и jQuery/JavaScript. Я использую запросы AJAX для получения данных из базы данных, а также отправку данных в базу данных. Я получил метод запроса AJAX «GET». Это мой метод «GET» (это в сценарии, который у меня есть на одной из моих HTML-страниц).Использование jQuery AJAX запросов - POST для php

метод GET

var outputHeader = $('#outputHeader'); 
var outputDes = $('#outputDes'); 
$.ajax({ 
    url: '/currentEvent.php', 
    type: 'GET', 
    //data: 'json', 
    datatype: 'jsonp', 
    jsonp: 'jsoncallback', 
    timeout: 5000, 
    success: function (data) { 
     outputHeader.html(""); 
     outputDes.html(""); 
     for (var i in data) { 
      outputHeader.append("<h2>" + data[i].Event_Name + "</h2>" + "<p>" + data[i].Event_Date + "</p>" + "<p>" + data[i].Event_Time + "</p>" + "<p>" + data[i].Event_Venue + "</p>" + "<p>" + "Organised by &nbsp" + data[i].Event_Organiser + "</p>"); 
      outputDes.append("<center>" + "<img src='" + data[i].Event_Image + "'/>" + "</center>" + "<p>" + data[i].Event_Description + "</p>") 
     } 
    }, 
    error: function() { 
     outputHeader.html('<p>There was an error loading the data.</p>'); 
     outputDes.html('<p>There was an error loading the data.</p>'); 
    }, 
}); 

Это метод 'POST', что меня беспокоит. Это код, который я использую для метода POST (это в скрипте, который у меня есть на одной из моих HTML-страниц).

метод POST

var urlID = 1; 
$.ajax({ 
    url: '/currentEvent.php', 
    type: 'POST', 
    data: 'urlID=' + urlID, 
    datatype: 'text', 
    success: function (data) { 
     console.log(data); 
    }, 
}); 

Запрос AJAX является размещение на этой странице .php.

currentEvent.php страница

 $eid = $_POST['urlID']]; 
     $query = "SELECT * FROM Event WHERE Event_ID = {$eid}"; 
     $getData = sqlsrv_query($conn, $query); 
     if ($getData === false) { 
      die(print_r(sqlsrv_errors(), true)); 
     }   
     $records = array(); 

      while($row = sqlsrv_fetch_array($getData, SQLSRV_FETCH_ASSOC)) 
      { 
       $records[] = $row; 
      } 
     //echo json_encode($getData); 
     echo json_encode($records); 

Когда я запускаю страницу HTML (я использую сервер), он не ставит "$ EID" как 1. У меня есть «POST 'перед «GET», потому что я должен отправить идентификатор на страницу php, чтобы он мог запустить запрос и вернуть данные обратно в приложение. Результатом является массив переменных в методе «GET», который не определен. Я бы опубликовал фотографию, но я не могу, потому что я новичок.

Я пробовал решения, рекомендованные другими пользователями, но это не сработало. Я немного новичок, когда дело доходит до разработки в jQuery и JavaScript, поэтому мне нужно понять это. Я что-то делаю неправильно?

+0

вы звоните функцию GET после функции POST? Используете ли вы эти значения? Возможно, ваша проблема решается с помощью '$ .Deferred'. Но с этой информацией невозможно увидеть. Пожалуйста, опубликуйте все свои соответствующие коды, объявления функций и т. Д. –

+0

Я вызываю функцию POST перед функцией GET. Где я должен использовать '$ .Deferred'? – LDav0382

+0

Отложенный объект позволяет выполнить действие после завершения другого действия. Это самая распространенная проблема для новых пользователей, которая начинает развиваться с асинхронными вызовами. Подробнее см. В документации: https://api.jquery.com/category/deferred-object/ –

ответ

-1

Из того, что я знаю, в сообщении вам нужно установить заголовок запроса «content-type» в «multipart/form-data». Это можно сделать так:

$.ajax({ 
     url: "/currentEvent.php", 
     type: "POST", 
     data: 'urlID=' + urlID, 
     datatype: 'text', 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader('content-type', 'multipart/form-data'); 
     }, 
     success: function (data) { 
      console.log(data); 
     }, 
     }); 

Надеются, что это помогает,

Awesomeness01

+0

Я реализовал это, но когда я запускаю веб-страницу, он все еще говорит, что переменная не определена ... – LDav0382

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