jQuery.post( url, [ data ], [ success(data, textStatus, jqXHR) ], [ dataType ] )
ארגומנטים
jQuery.post( url, [ data ], [ success(data, textStatus, jqXHR) ], [ dataType ] )
$.ajax({ type: 'POST', url: url, data: data, success: success dataType: dataType });
success
מעבירה נתונים שחזרו,
שהם אלמנט שורש של XML ומחרוזת טקסט,
תלוי מסוג
MIME
של התגובה.
היא גם מעבירה סטטוס של הטקסט של תגובה שהתקבלה.
success גם מעבירה אובייקט jqXHR (ב jQuery 1.4, היא העבירה אובייקט XMLHttpRequest).
רוב היישומים יציינו מטפל ביצוע מוצלח:
$.post('ajax/test.html', function(data) { $('.result').html(data); });
דוגמה הזו מקבלת דף HTML ומכניסה אותה בדף הנוכחי.
דפים שהתקבלו באמצעות
POST
מעולם לא במטמון,
לכן לאופציות
cache ו- ifModified ב- jQuery.ajaxSetup()
אין השפעה על בקשות האלה.
אובייקט jqXHR
החל מ jQuery 1.5, כל השיטות של jQuery Ajax מחזירות אובייקט מורחב של XMLHTTPRequest. זה אובייקט jQuery XHR, או "jqXHR", המוחזר על ידי $.post() מיישם את ממשק Promise, הוא נותן את כל המאפיינים, השיטות, ואת ההתנהגות של Promise (ראו אובייקט נדחה עבור מידע מלא). לנוחות ועקביות עם פונקציה קריאה חוזרת שמות, המשתמשים ב $.ajax(), הוא מספק שיטות .error(), .success() ו .complete(). השיטות האלה מקבלות ארגומנט של פונקציה המופעלת כאשר בקשה מסתיימת, ופונקציה מקבלת אותם ארגומנטים, בהתאם לשמות של פונקציה של קריאה חוזרת $.ajax().
ממשק Promise ב jQuery 1.5 גם מאפשר לשיטות jQuery Ajax, כולל $.post(), לחבר פונקציות מרובות של קריאה חוזרת .success(), .complete() ו .error() על בקשה היחידה, ואף מקצה פונקציות של קריאה חוזרת האלה אחרי שבקשה כבר הסתיימה. אם בקשה כבר הסתיימה, פונקציה של קריאה חוזרת מופעלת מייד.
// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.post("example.php", function() {
alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
// perform other work here ...
// Set another completion function for the request above
jqxhr.complete(function(){ alert("second complete"); });
הערות נוספות:
- בשל מגבלות אבטחה בדפדפן, רוב הבקשות של "Ajax" תלויות ב כללים המגבילים את דומיין; בקשה לא יכולה לקבל נתונים מדומיין אחר, תת דומיין או פרוטוקול.
- אם בקשה עם
jQuery.post()מחזירה קוד שגיאה, היא תכשל בדממה אלא אם התסריט מפעיל גם שיטה גלובלית.ajaxError(). החל מ jQuery 1.5, שיטה.error()של אובייקטjqXHRהמוחזר על ידיjQuery.post()גם נגישה עבור טיפול בשגיות. - תסריט ובקשות JSONP הם לא כפופים להגבלות של דומיין.
דוגמאות
דוגמה 1
מבקשת דף test.php, אבל מתעלמת מהתוצאות שחזרו.
$.post("test.php");
דוגמה 2
מבקשת דף test.php ושולחת מספר נתונים נוספים ( אבל עדיין מתעלמת מהתוצאות שחזרו ).
$.post("test.php", { name: "John", time: "2pm" } );
דוגמה 3
שולחת מערכי נתונים לשרת ( אבל עדיין מתעלמת מהתוצאות שחזרו ).
$.post("test.php", { 'choices[]': ["Jon", "Susan"] });
דוגמה 4
שולחת נתוני טופס באמצעות בקשת ajax.$.post("test.php", $("#testform").serialize());
דוגמה 5
מציגה בהודעה תוצאה של בקשה של דף test.php (HTML או XML, תלוי במה שחזר) .
$.post("test.php", function(data){
alert("Data Loaded: " + data);
});
דוגמה 6
מציגה בהודעה תוצאה של בקשה של דף test.php עם נתונים נוספים שנשלחו (HTML או XML, תלוי במה שחזר)
$.post("test.php", { name: "John", time: "2pm" },
function(data){
alert("Data Loaded: " + data);
});
דוגמה 7
מקבלת תוכן של הדף test.php, שומרת באובייקט XMLHttpResponse ומפעילה פונקציה process().
$.post("test.php", { name: "John", time: "2pm" },
function(data){
process(data);
}, "xml");
דוגמה 8
מקבלת תוכן של הדף test.php, שהוחזר בפורמת json(<?php echo json_encode(array("name"=>"John","time"=>"2pm")); ?>)
$.post("test.php", { "func": "getNameAndTime" },
function(data){
alert(data.name); // John
console.log(data.time); // 2pm
}, "json");

