저는 PHP와 JavaScript로 작은 캘린더 앱을 만들고 있습니다.완료하기 전에 외부 방법이 완료 될 때까지 기다리시겠습니까?
매우 간단function populateEvents() {
$.ajax({
type: "GET",
url: "populateEvents.php",
success: function(data, textStatus, XMLHttpRequest) {
$('#events').html(data);
},
error: function(jqXHR, textStatus, errorThrown) {
alert("Status: " + textStatus + ". Error thrown: " + errorThrown);
}
});
}
, populateEvents.php
는 대부분의 작업을 수행합니다 첫 페이지에 이벤트를 div
를 채우려면,이 기능을 실행합니다. 내가 이벤트를 추가 할 때
지금, 나는 다음과 같은 함수를 호출 :
function createEvent(u_id) {
var title = $("#titleInput").val();
var type = $("#typeSelect").val();
var location = $("#locationInput").val();
var date = $("#inputDate").val();
var time = $("#inputTime").val();
var allday = $('#allDaySelect:checked').val() !== undefined ? '1' : '0';
var duedate = type == 'todo' ? date : '';
var notes = $("#inputNotes").val();
var output = 'u_id=' + u_id + '&title=' + title + '&type=' + type + '&location=' + location + '&date=' + date + '&time=' + time + '&allday=' + allday + '&duedate=' + duedate + '¬es=' + notes;
$.ajax({
type: "GET",
url: "addEvent.php",
data: output,
success: function(data, textStatus, XMLHttpRequest) {
if (data == '') {
toggleNewEvent();
populateEvents();
} else {
// extract form problems from formProblems, in form: title=empty&date=empty&...
var errorArray = data.split("&");
var fields = '';
$.each(errorArray, function(index, value) {
var field;
var smallArray = value.split("=");
field = smallArray[0];
fields = fields + field + ', ';
});
alert('You must fill in the following fields: ' + fields);
}
},
error: function(jqXHR, textStatus, errorThrown) {
alert("Status: " + textStatus + ". Error thrown: " + errorThrown);
}
});
}
좀 더 복잡하지만, 난 당신이 요점을 얻을 확신합니다. 값을 addEvent.php
으로 보내고 구문 분석 된 결과 문자열을 구문 분석하여 반환합니다. 이제 전체 PHP 측면을 재구성하여 eventlist
클래스와 이벤트 클래스를 구현했습니다. 이전에는 addevent.php
파일은 모든 실제 백엔드 작업을했지만 지금은 (일부 확인 후) 해당 파일이 아래로 비등 : 그러나, 자바 스크립트 함수에이 파일 수익률이이 것을 전송있어 그 결과
if ($return == '') {
/*If return is empty, everything is fine, carry on.*/
$eventlist->addEvent($u_id, $title, $type, $date, $time, $allday, $location, $dueby, $notes);
} else {
/*Throw an error*/
echo ($return);
}
addEvent
메서드를 실행하려면 eventlist
개체에 요청하십시오. 그런 다음 함수는 즉시 이벤트 div를 채우려고 시도하므로 결과적으로 addEvent
메서드가 완료되지 않았으므로 작동하지 않습니다. 그러나 페이지를 새로 고칠 때 올바르게 작동하므로 제대로 삽입했다는 것을 알기 때문에 두 번째 PHP 파일이 끝날 때까지 기다려야합니다.
제발 .. ** '데이터'매개 변수 **로 문자열을 사용하지 마십시오. 탈출에 신경 쓰지 않아도되는 것을 피할 수있는 객체를 전달할 수 있습니다. – ThiefMaster
javascript와 php간에 객체를 전달하는 방법은 무엇입니까? –
그는'output' 변수가 json 객체 여야 함을 의미합니다. jquery는 텍스트를 이스케이프 처리하고 적절한 데이터를 전달합니다. '{u_id ': 1,'title ':'이것은 내 제목 '}' – Val