ajax form problem

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
billiaswhs
Δημοσιεύσεις: 346
Εγγραφή: 11 Νοέμ 2004 00:29
Επικοινωνία:

ajax form problem

Δημοσίευση από billiaswhs » 30 Μαρ 2010 23:58

Γεια χαρά λοιπον έχω μια φορμα (παραθέτω μόνο τον απαραίτητο κώδικα)

Κώδικας: Επιλογή όλων

<form action="tade.php" method="POST"/>

<div id="target">


</div>

<input type="text" name="παραδειγμα"/>

<input type="submit" name="submit" />
</form>

και μέσα σε αυτήν υπάρχει ένα div το #target στο οποίο φορτώνεται δυναμικά μεσω ajax
ένα <input /> δηλαδή

Κώδικας: Επιλογή όλων

<form action="tade.php" method="POST"/>

<div id="target">

<input type="text" name="yellow" >

</div>

<input type="text" name="green"/>

<input type="submit" name="submit" />
</form>
Όταν εγώ κάνω submit αυτή τη φόρμα σε ένα άλλο php script

λογικά λαμβάνω τις μεταβλητές
$_POST['green'], $_POST['yellow'].
και μπορώ να τις τυπώσω echo. Στον Internet explorer δουλεύουν όλα
κανονικά ενω στον firefox η μεταβλητή $_POST['yellow'] δεν υπάρχει
αύτη που προήλθε από το input που φορτώθηκε μέσω ajax στη form
δεν μπορώ να κατάλω γιατί δεν λειτουργεί στο firefox?
Τελευταία επεξεργασία από το μέλος billiaswhs την 31 Μαρ 2010 22:25, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

ajax form problem

Δημοσίευση από vcore » 31 Μαρ 2010 20:05

Κώδικας: Επιλογή όλων

<input type="text" name="yellow" method="POST"/> 
Εγώ σε πρώτη φάση δεν κατάλαβα τι δουλειά έχει το method="post" μέσα στο Input?
Αυτό πρέπει να μπει στην φόρμα:

Κώδικας: Επιλογή όλων

<form action="tade.php" method="post"> 
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

billiaswhs
Δημοσιεύσεις: 346
Εγγραφή: 11 Νοέμ 2004 00:29
Επικοινωνία:

ajax form problem

Δημοσίευση από billiaswhs » 31 Μαρ 2010 22:25

α λάθος το έκανα ενώ έγγραφα το το κώδικα mesa στο post
δεν είναι ο κανονικός κώδικας άλλα μόνο ο απαραίτητος
για να δείξω πιο είναι το πρόβλημα μου dummy code το διόρθωσα

Άβαταρ μέλους
vcore
Δημοσιεύσεις: 354
Εγγραφή: 20 Δεκ 2003 01:19
Τοποθεσία: Crete
Επικοινωνία:

ajax form problem

Δημοσίευση από vcore » 31 Μαρ 2010 22:50

Δεν είναι δυνατόν να παίζει με ΙΕ και όχι με firefox. Για δώσε και το Js file σου.
Easy CMS
------------
Το να ζητάς βοήθεια δεν σημαίνει ότι είσαι εξαρτημένος.

billiaswhs
Δημοσιεύσεις: 346
Εγγραφή: 11 Νοέμ 2004 00:29
Επικοινωνία:

ajax form problem

Δημοσίευση από billiaswhs » 01 Απρ 2010 00:42

βασικά το όλο πρόβλημα είναι ότι το uploadify ένα ajax plugin της juery το οποίο το χρησιμοποιώ με το codeigniter

το παρακάτω είναι τροποιημένο αρχείο php του uploadify για να δουλεύει με codeigniter

Κώδικας: Επιλογή όλων


<?php
/*
*    Functions taken from CI_Upload Class
*
*/
    
    function set_filename&#40;$path, $filename, $file_ext, $encrypt_name = FALSE&#41;
    &#123;
        if &#40;$encrypt_name == TRUE&#41;
        &#123;        
            mt_srand&#40;&#41;;
            $filename = md5&#40;uniqid&#40;mt_rand&#40;&#41;&#41;&#41;.$file_ext;    
        &#125;
    
        if &#40; ! file_exists&#40;$path.$filename&#41;&#41;
        &#123;
            return $filename;
        &#125;
    
        $filename = str_replace&#40;$file_ext, '', $filename&#41;;
        
        $new_filename = '';
        for &#40;$i = 1; $i < 100; $i++&#41;
        &#123;            
            if &#40; ! file_exists&#40;$path.$filename.$i.$file_ext&#41;&#41;
            &#123;
                $new_filename = $filename.$i.$file_ext;
                break;
            &#125;
        &#125;

        if &#40;$new_filename == ''&#41;
        &#123;
            return FALSE;
        &#125;
        else
        &#123;
            return $new_filename;
        &#125;
    &#125;
    
    function prep_filename&#40;$filename&#41; &#123;
       if &#40;strpos&#40;$filename, '.'&#41; === FALSE&#41; &#123;
          return $filename;
       &#125;
       $parts = explode&#40;'.', $filename&#41;;
       $ext = array_pop&#40;$parts&#41;;
       $filename    = array_shift&#40;$parts&#41;;
       foreach &#40;$parts as $part&#41; &#123;
          $filename .= '.'.$part;
       &#125;
       $filename .= '.'.$ext;
       return $filename;
    &#125;
    
    function get_extension&#40;$filename&#41; &#123;
       $x = explode&#40;'.', $filename&#41;;
       return '.'.end&#40;$x&#41;;
    &#125; 


// Uploadify v1.6.2
// Copyright &#40;C&#41; 2009 by Ronnie Garcia
// Co-developed by Travis Nickels
if &#40;!empty&#40;$_FILES&#41;&#41; &#123;
    $path = $_SERVER&#91;'DOCUMENT_ROOT'&#93; . $_REQUEST&#91;'folder'&#93; . '/';
   //$client_id = $_GET&#91;'client_id'&#93;;
   $file_temp = $_FILES&#91;'Filedata'&#93;&#91;'tmp_name'&#93;;
   $file_name = prep_filename&#40;$_FILES&#91;'Filedata'&#93;&#91;'name'&#93;&#41;;
   $file_ext = get_extension&#40;$_FILES&#91;'Filedata'&#93;&#91;'name'&#93;&#41;;
   $real_name = $file_name;
   $newf_name = set_filename&#40;$path, $file_name, $file_ext&#41;;
   $file_size = round&#40;$_FILES&#91;'Filedata'&#93;&#91;'size'&#93;/1024, 2&#41;;
   $file_type = preg_replace&#40;"/^&#40;.+?&#41;;.*$/", "\\1", $_FILES&#91;'Filedata'&#93;&#91;'type'&#93;&#41;;
   $file_type = strtolower&#40;$file_type&#41;;
   $targetFile =  str_replace&#40;'//','/',$path&#41; . $newf_name;
   move_uploaded_file&#40;$file_temp,$targetFile&#41;;

   $filearray = array&#40;&#41;;
   $filearray&#91;'file_name'&#93; = $newf_name;
   $filearray&#91;'real_name'&#93; = $real_name;
   $filearray&#91;'file_ext'&#93; = $file_ext;
   $filearray&#91;'file_size'&#93; = $file_size;
   $filearray&#91;'file_path'&#93; = $targetFile;
   //$filearray&#91;'client_id'&#93; = $client_id;

   $json_array = json_encode&#40;$filearray&#41;;
   echo $json_array;
&#125;else&#123;
    echo "1";    
&#125; 

ο κώδικα της σελίδας

Κώδικας: Επιλογή όλων

<script type="text/javascript" language="javascript">
		$&#40;document&#41;.ready&#40;function&#40;&#41;&#123;
										
					$&#40;"#upload"&#41;.uploadify&#40;&#123;
							uploader&#58; 'http&#58;//www.example.com/js/uploadify/uploadify.swf',
							script&#58; 'http&#58;//www.example.com/js/uploadify/uploadify.php',
							cancelImg&#58; 'http&#58;//www.example.com/js/uploadify/cancel.png',
							folder&#58; 'photos/',
							scriptAccess&#58; 'always',
							sizeLimit&#58; '4718592',
							fileDesc&#58; '*.jpg;*.JPG;*.jpeg;*.JPEG;*.png;*.PNG;*.gif;,*.GIF;',
              fileExt&#58; '*.jpg;*.JPG;*.jpeg;*.JPEG;*.png;*.PNG;*.gif;,*.GIF;',
							auto&#58; true,

							multi&#58; false,
							'onError' &#58; function &#40;a, b, c, d&#41; &#123;
								 if &#40;d.status == 404&#41;
									alert&#40;'Could not find upload script.'&#41;;
								 else if &#40;d.type === "HTTP"&#41;
									alert&#40;'error '+d.type+"&#58; "+d.status&#41;;
								 else if &#40;d.type ==="File Size"&#41;
									alert&#40;c.name+' '+d.type+' Limit&#58; '+Math.round&#40;d.sizeLimit/1024&#41;+'KB'&#41;;
								 else
									alert&#40;'error '+d.type+"&#58; "+d.text&#41;;
								&#125;,
							'onComplete'   &#58; function &#40;event, queueID, fileObj, response, data&#41; &#123;
												//Post response back to controller
												$.post&#40;"http&#58;//www.example.com/index.php?/blog/uploadify",&#123;filearray&#58; response&#125;,function&#40;info&#41;&#123;
													$&#40;"#target"&#41;.append&#40;info&#41;;  //Add response returned by controller		
												  															  
												&#125;&#41;;
												
		
							&#125;
					&#125;&#41;;
					
					

		&#125;&#41;;
	</script>

και η φόρμα

Κώδικας: Επιλογή όλων

<form action="http&#58;//www.example.com/index.php?/blog/up" method="post" enctype="multipart/form-data">      <td>

                 <div id="target">
	         
	  </div>	
	  
	  </td>
  </tr>

  <tr>
      <td align="right"><p>Title&#58;</p></td>
      <td>
          <span class="example">Characters left&#58;</span> <span class="charsLeft">30</span> <br />
          <input type="text" name="title" size="33"  maxlength="30" class="limited"/>
      </td> 
  </tr>
  <tr>
      <td align="right"><p>Tags&#58;</p></td>
      <td>
      <input type="text" name="tags" size="33" class="" />
      </td> 
  </tr>
   <tr>
      <td>
      
      </td>  
      <td><div class="buttonsforms"><strong><input type="submit" value="save" /></strong></div></td>
  </tr>
</table>


</form>
και τα καινούργια στοιχεία που προσθέτονται μέσω ajax δεν γίνονται render από
το firefox

billiaswhs
Δημοσιεύσεις: 346
Εγγραφή: 11 Νοέμ 2004 00:29
Επικοινωνία:

ajax form problem

Δημοσίευση από billiaswhs » 01 Απρ 2010 21:38

το πρόβλημα είναι παρόμοιο με αυτό

support.mozilla.com/tiki-view_forum_thread.php?locale=en-US&comments_parentId=443042&forumId=1

αλλά δεν έχω βρει λύση ακόμα

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

ajax form problem

Δημοσίευση από fafos » 02 Απρ 2010 04:03

oso kai na prospathisa na to kano na mhn doulepsei den ta katafera.. gia tou logou to alhthes:

http://istopoli.com/tuts/up/

kati pairneis lathos apo ta post profanos...

billiaswhs
Δημοσιεύσεις: 346
Εγγραφή: 11 Νοέμ 2004 00:29
Επικοινωνία:

ajax form problem

Δημοσίευση από billiaswhs » 02 Απρ 2010 07:02

ωραία ας τα πάρω με λογική σειρά

1)πατάει κάποιος το κουμπί browse
2)εκτελείται το javascript

Κώδικας: Επιλογή όλων

$&#40;"#upload"&#41;.uploadify&#40;&#123; 
                     uploader&#58; 'http&#58;//www.example.com/js/uploadify/uploadify.swf', 
                     script&#58; 'http&#58;//www.example.com/js/uploadify/uploadify.php', 
                     cancelImg&#58; 'http&#58;//www.example.com/js/uploadify/cancel.png', 
                     folder&#58; 'photos/', 
                     scriptAccess&#58; 'always', 
                     sizeLimit&#58; '4718592', 
                     fileDesc&#58; '*.jpg;*.JPG;*.jpeg;*.JPEG;*.png;*.PNG;*.gif;,*.GIF;', 
              fileExt&#58; '*.jpg;*.JPG;*.jpeg;*.JPEG;*.png;*.PNG;*.gif;,*.GIF;', 
                     auto&#58; true, 


το οποίο εκτελεί το αρχείο uploadify.php το οποίο ανεβάζει και μετονομάζει το αρχεία

Κώδικας: Επιλογή όλων

if &#40;!empty&#40;$_FILES&#41;&#41; &#123; 
    $path = $_SERVER&#91;'DOCUMENT_ROOT'&#93; . $_REQUEST&#91;'folder'&#93; . '/'; 
   //$client_id = $_GET&#91;'client_id'&#93;; 
   $file_temp = $_FILES&#91;'Filedata'&#93;&#91;'tmp_name'&#93;; 
   $file_name = prep_filename&#40;$_FILES&#91;'Filedata'&#93;&#91;'name'&#93;&#41;; 
   $file_ext = get_extension&#40;$_FILES&#91;'Filedata'&#93;&#91;'name'&#93;&#41;; 
   $real_name = $file_name; 
   $newf_name = set_filename&#40;$path, $file_name, $file_ext&#41;; 
   $file_size = round&#40;$_FILES&#91;'Filedata'&#93;&#91;'size'&#93;/1024, 2&#41;; 
   $file_type = preg_replace&#40;"/^&#40;.+?&#41;;.*$/", "\\1", $_FILES&#91;'Filedata'&#93;&#91;'type'&#93;&#41;; 
   $file_type = strtolower&#40;$file_type&#41;; 
   $targetFile =  str_replace&#40;'//','/',$path&#41; . $newf_name; 
   move_uploaded_file&#40;$file_temp,$targetFile&#41;; 

   $filearray = array&#40;&#41;; 
   $filearray&#91;'file_name'&#93; = $newf_name; 
   $filearray&#91;'real_name'&#93; = $real_name; 
   $filearray&#91;'file_ext'&#93; = $file_ext; 
   $filearray&#91;'file_size'&#93; = $file_size; 
   $filearray&#91;'file_path'&#93; = $targetFile; 
   //$filearray&#91;'client_id'&#93; = $client_id; 

   $json_array = json_encode&#40;$filearray&#41;; 
   echo $json_array; 
&#125;else&#123; 
    echo "1";    
&#125; 




όπου παίρνει τα χαρακτηριστικά και το νέο όνομα του αρχείου τα αποθηκεύει
στο array $filearray όπου το κάνει encoding με το json

και στη συνέχεια εκτελείται

εκτελείται από το javascript το ajax post

Κώδικας: Επιλογή όλων


$.post&#40;"http&#58;//www.example.com/index.php?/blog/uploadify",&#123;filearray&#58; response&#125;,function&#40;info&#41;&#123; 
                                       $&#40;"#target"&#41;.append&#40;info&#41;;  //Add response returned by controller       
                                                                                     
                                    &#125;&#41;; 

στέλνει τo filearray encodirismeno με jason στη function uploadify του controller blog του codeigniter δηλαδή το index.php?/blog/uploadify

Κώδικας: Επιλογή όλων

function uploadify&#40;&#41;
&#123;
		
		$file = $this->input->post&#40;'filearray'&#41;;
		$data&#91;'json'&#93; = json_decode&#40;$file&#41;;
		
		$this->load->view&#40;'upload/uploadify',$data&#41;;
&#125;
όπου εκεί γίνεται decode όλo το array και επιστρέφει πίσω το post

Κώδικας: Επιλογή όλων

$.post&#40;"http&#58;//www.example.com/index.php?/blog/uploadify",&#123;filearray&#58; response&#125;,function&#40;info&#41;&#123; 
                                       $&#40;"#target"&#41;.append&#40;info&#41;;  //Add response returned by controller       
                                                                                     
                                    &#125;&#41;; 
και κάνει append το array που έχει γίνει decode στο controller στο

<div id="target"> </div>

το οποίο βρίσκεται στη φόρμα

Κώδικας: Επιλογή όλων

<form action="http&#58;//www.example.com/index.php?/blog/up" method="post" enctype="multipart/form-data">      <td> 

                 <div id="target"> 
             
     </div>    
     
     </td> 
  </tr> 

  <tr> 
      <td align="right"><p>Title&#58;</p></td> 
      <td> 
          <span class="example">Characters left&#58;</span> <span class="charsLeft">30</span> <br /> 
          <input type="text" name="title" size="33"  maxlength="30" class="limited"/> 
      </td> 
  </tr> 
  <tr> 
      <td align="right"><p>Tags&#58;</p></td> 
      <td> 
      <input type="text" name="tags" size="33" class="" /> 
      </td> 
  </tr> 
   <tr> 
      <td> 
      
      </td>  
      <td><div class="buttonsforms"><strong><input type="submit" value="save" /></strong></div></td> 
  </tr> 
</table> 


</form>
 
και την οποία θέλω να κάνω submit σε άλλη function up του controller blog
όπου ξαναστέλνει τα input τα οποία έγινα decode από το filearray μαζί με
αυτά

Κώδικας: Επιλογή όλων

<input type="text" name="title" size="33"  maxlength="30" class="limited"/> 
      </td> 
  </tr> 
  <tr> 
      <td align="right"><p>Tags&#58;</p></td> 
      <td> 
      <input type="text" name="tags" size="33" class="" /> 
όπού θα πάνε όλα μαζί πλέον στο blog/up και εκεί θα συνεχίσουν σε ένα model το
οποίο θα τα αποθηκεύσεί όλα μαζεί σε κατάλληλου πίνακες στη βάση δεδομένων.

το όλο πράγμα λειτουργεί μια χαρά στο internet explorer και δε λειτουργεί
στο firefox, μπορεί ότι γινόνται encode με το jason?

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 3 επισκέπτες