הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שליחת נתונים של multipart/form-data באמצעות JQ (https://hosts.co.il/forums/showthread.php?t=99121)

איציק ברבי 06-08-12 17:36

שליחת נתונים של multipart/form-data באמצעות JQ
 
איך אני עושה זה?
הרי הוא משתמש במטודה $_FILES ולא בPOST או GET
ואני משלב בניהם,
חיפשתי על זה קצת בגוגל וקיבלתי כיוון אבל לא מספיק..
תודה לעוזרים.

Haimz 06-08-12 19:57

עניתי לך כבר באשכול קודם, זה פועל ב100% ואני מדבר מנסיון, חבל שאתה לא קורא.

איציק ברבי 06-08-12 20:03

אני חושב שאתה מתבלבל ביני לבין משהו אחר.

בניה 06-08-12 22:13

ניתן לשלוח באותו REQUEST גם multipart/form-data וגם שדות GET וגם POST
כל נתון יגיע במערך המתאים

איציק ברבי 07-08-12 01:47

ציטוט:

נכתב במקור על ידי בניה (פרסם 853618)
ניתן לשלוח באותו REQUEST גם multipart/form-data וגם שדות GET וגם POST
כל נתון יגיע במערך המתאים

אוקי,
ואיך זה בא לידי ביטוי בקוד של הJS?
זה כל השאלה?

בניה 07-08-12 09:35

זה טופס? פשוט תעשה לו SUBMIT...
אם אתה רוצה להעלות את הקובץ בצורה אסינכרונית ("AJAX")
לא כל הדפדפנים תומכים בזה, בדרך כלל משתמשים בפלאש או IFRAME או בפלאגין שבוחר את הדרך הזמינה

איציק ברבי 07-08-12 09:38

PHP קוד:

$.ajax({
            
url"Ajax.php?act=UploadImg",
            
type"POST",
            
data: $(this).serialize(),
            
success: function(callback){
                
/*if(callback.match(/(.*):::ok/i)){
                    $("form#upload").hide();
                    $("div.status").html(callback);
                }
                else{
                    alert("אירעה שגיאה במהלך העלאה");
                }*/
                
alert(callback);
                                
            }
        }); 

אני רוצה אופציה כזאת ללא שימוש בפלאגין מסויים, יש אפשרות?

בניה 07-08-12 10:37

בכל מקרה זה לא יהיה בדיוק בצורה הזו, ולא יהיה CROSS BROWSER
אנחנו משתמשים כרגע ב:
http://valums.com/ajax-upload/
שעושה לך את העבודה

איציק ברבי 07-08-12 11:13

ציטוט:

נכתב במקור על ידי בניה (פרסם 853639)
בכל מקרה זה לא יהיה בדיוק בצורה הזו, ולא יהיה CROSS BROWSER
אנחנו משתמשים כרגע ב:
http://valums.com/ajax-upload/
שעושה לך את העבודה

עמוס מידי לטעמי,
מצאתי פתרון ברשת,
בFORM שמתי את הקישור לעמוד העלאה(uppic)
וזה הקוד JS
PHP קוד:

$('form#upload').ajaxForm({
        
beforeSubmit: function() {
            $(
'div.status').html('<img src="loading.gif" alt="" />');
        },
        
success: function(callback) {
            if(
callback.match(/(.*):::ok/i)){
                $(
"form#upload").hide();
                $(
"div.status").html(callback);
            }
            else{
                
alert("אירעה שגיאה במהלך העלאה");
            }                            
        }
    }); 

תהנו חברה!

בניה 07-08-12 11:35

נראה שלא עובד בIE, גם לא 9:
http://jquery.malsup.com/form/progress.html

איציק ברבי 07-08-12 11:49

ציטוט:

נכתב במקור על ידי בניה (פרסם 853642)
נראה שלא עובד בIE, גם לא 9:
http://jquery.malsup.com/form/progress.html

שמתי לב לזה עכשיו,
האפשרות שאתה הבאת עובדת לIE?

בניה 07-08-12 13:07

ציטוט:

נכתב במקור על ידי איציק ברבי (פרסם 853644)
שמתי לב לזה עכשיו,
האפשרות שאתה הבאת עובדת לIE?

כן, הוא עושה "נוהל דרדור", משתמש בכלי הכי מתקדם שיש לו זמין
אם אני לא טועה במקרה הכי "גרוע" (IE7) הוא משתמש בIFRAME

יכול להיות שיש משהו יותר אלגנטי ממה שהבאתי, אבל זה הכיוון.
לצערינו בגלל IE החיים קשים

איציק ברבי 07-08-12 22:07

הממשק הזה גדול מידי לצרכים שלי,
אני בסה"כ צריך למצוא דרך לשלוח את הנתונים בAJAX.
חיפשתי על איך לאפשר את AjaxForm בIE ולא מצאתי פתרון.
אולי ידוע לך משהו?

בניה 07-08-12 22:55

ציטוט:

נכתב במקור על ידי איציק ברבי (פרסם 853663)
הממשק הזה גדול מידי לצרכים שלי,
אני בסה"כ צריך למצוא דרך לשלוח את הנתונים בAJAX.
חיפשתי על איך לאפשר את AjaxForm בIE ולא מצאתי פתרון.
אולי ידוע לך משהו?

למה גדול מידי? זה רק קוד.
אתה יכול לנסות להשתמש בפלאש, זה גם סבבה
נסה את:
http://code.google.com/p/swfupload/

איציק ברבי 08-08-12 00:40

ציטוט:

נכתב במקור על ידי בניה (פרסם 853666)
למה גדול מידי? זה רק קוד.
אתה יכול לנסות להשתמש בפלאש, זה גם סבבה
נסה את:
http://code.google.com/p/swfupload/

תודה,
בסוף הלכתי על הפלאש:
זה הקוד המתוקן(ערכתי את הפונקציות שלו ומימשתי אותו בדיוק למה שאני צריך).
PHP קוד:

$(function() {
    var 
uploader = new plupload.Uploader({
        
runtimes 'gears,html5,flash,silverlight,browserplus',
        
browse_button 'upload',
        
container 'container',
        
max_file_size '10mb',
        
url 'up.php',
        
flash_swf_url './plupload.flash.swf',
        
silverlight_xap_url './plupload.silverlight.xap',
        
resize : {width 320height 240quality 90}
    });
    
uploader.init();
    
uploader.bind('FileUploaded', function(upfile,info) {
        if(
info.response.match(/(.*),OK/)){
            var 
url info.response.split(',');
            $(
".status").html(url[0]);
        }
        else{
            
alert(info.response);
            $(
".status").html("");
        }        
    });    
    
uploader.bind('FilesAdded', function(upfiles) {
        $(
".status").html(files[0].name);
        $(
".status").html('<img src="loading.gif" alt="" />');
        
uploader.start();
        
up.refresh();
    });    
    
}); 

http://www.plupload.com/ - עמוד הבית שלו.


כל הזמנים הם GMT +2. הזמן כעת הוא 06:00.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ