2014-06-23 11 views
6

मैं प्रोजेक्ट के लिए एक PHP फ़ाइल में अपना फॉर्म डेटा और फ़ाइलों को पास करने के लिए अजाक्स का उपयोग कर रहा हूं।Jquery AJAX लौटने वाला 404 नहीं मिला

जावास्क्रिप्ट:

$("form#applyform").submit(function(){ 

var data = new FormData(); 
jQuery.each($('#file')[0].files, function(i, file) { 
    data.append('file-'+i, file); 
}); 

$.ajax({ 
    url: 'ValidateApplication.php', 
    data: data, 
    cache: false, 
    contentType: false, 
    processData: false, 
    type: 'POST', 
    success: function(data){ 
     alert(data); 
    } 
}); 

} 

ValidateApplication.php निश्चित रूप से मौजूद है। अगर मैं वेब ब्राउजर में एड्रेस टाइप करता हूं, तो मैं इसे देख सकता हूं, हालांकि जब मैं फॉर्म क्रोम कंसोल जमा करता हूं 404.

PHP उसी HTML फ़ोल्डर के समान फ़ोल्डर में है जो जावास्क्रिप्ट चल रहा है, इसलिए मैं उलझन में हूं कारण है कि मैं एक 404.

अद्यतन

अद्यतन 2

बार आ रही है

पोस्ट बदलने प्राप्त करने के लिए 404 त्रुटि से छुटकारा हो जाता है, लेकिन रिटर्न एक 500 आंतरिक सर्वर त्रुटि की कार्रवाई को बदलने के रूप में फॉर्म = "वाली dateAplication.php "और इसे सामान्य के रूप में सबमिट करना (AJAX के बिना) बिना किसी त्रुटि के सही फ़ाइल की ओर जाता है।

+0

फ़ोल्डर संरचना कृपया – mithunsatheesh

+6

क्या आपका पूंजीकरण सही है? कुछ ऑपरेटिंग सिस्टम/वेब सर्वर अलग-अलग पूंजीकरण का इलाज करते हैं। (यानी, 'ValidateAplication.php' 'validateapplication.php' जैसा नहीं है और न ही' Validateapplication.php') – esqew

+0

वेब ब्राउज़र में पूरा यूआरएल क्या काम करता है? और क्या आपने पूरा यूआरएल सेट करने की कोशिश की है न कि सिर्फ 'ValidateAplication.php' जैसा आपने पोस्ट किया है? – JakeGould

उत्तर

2

यह FormData ऑब्जेक्ट के साथ एक समस्या प्रतीत होता था। एक बार जब मैंने .serialize() का उपयोग करने के लिए अपनी विधि बदल दी, तो पेज ठीक काम करता था।

$("form#applyform").submit(function(){ 

    var data = $("form#applyform").serialize(); 
    jQuery.each($('#file')[0].files, function(i, file) { 
     data.append('file-'+i, file); 
    }); 

    $.ajax({ 
     url: 'ValidateApplication.php', 
     data: data, 
     cache: false, 
     contentType: false, 
     processData: false, 
     type: 'POST', 
     success: function(data){ 
      alert(data); 
     } 
    }); 
} 
+0

क्या आप वाकई इसे सही लिखा है? 'Serialize' लागू करने का नतीजा ऐसा कुछ नहीं है जिसमें 'संलग्न करें' विधि हो! – Alexander

0

फ़ाइल नाम से पहले एक/जोड़ने का प्रयास करें: यूआरएल: '/ValidateApplication.php',

प्राप्त करें और देखें कि यह काम करता है के लिए पद से अनुरोध प्रकार बदलने का प्रयास करें।

कोड के कुछ हिस्सों बाहर टिप्पणी की कोशिश:

/*cache: false, 
contentType: false, 
processData: false,*/ 

किसी अन्य ब्राउज़र की कोशिश करो।

+0

फ़ाइल नाम से पहले/उस रूट निर्देशिका का उपयोग करते हुए परिणाम जो काम नहीं करता है। (Http: //localhost/ValidateApplication.php पर http: //localhost/Scope%20Website/ValidateApplication.php के बजाय जाता है, जहां फ़ाइल है)। –

+0

इसे काम करने के लिए बदल रहा है लेकिन परिणामस्वरूप त्रुटि 500 ​​आंतरिक सर्वर त्रुटि –

+0

उन पंक्तियों पर टिप्पणी करने से अवैध आमंत्रण त्रुटि –

2

मैं एक ही मुद्दा था और 2 घंटे बाद क्या 404 नहीं मिला त्रुटि मैंने पाया कि मैं हाल ही में PHP से header() साथ खेल रहा था और कोड की निम्न पंक्ति को हटाने के लिए भूल गया था पैदा कर रहा था की तलाश में :

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); 

इसे हटाने के बाद, मेरे अजाक्स कार्य फिर से सामान्य हो गए।

+1

मैंने आपकी पोस्ट ढूंढने से 4 घंटे पहले बिताया था। धन्यवाद! –

संबंधित मुद्दे