Heim  >  Artikel  >  Backend-Entwicklung  >  Ajax-Upload seltsames Phänomen?

Ajax-Upload seltsames Phänomen?

WBOY
WBOYOriginal
2016-09-19 09:16:371170Durchsuche

<code><form method="post" name="form" id="form" enctype="multipart/form-data">
              <textarea name="post" rows="3" maxlength="100"  id="post"></textarea></td>
                 
                  <input type="file" name="myFile">
                 
                          <button type="submit" id="post_btn">發佈</button> <span id="show"></span>
              </form>
              
$("#post_btn").click(function(e){
     e.preventDefault();

        if (post.value=='')
        {
            post.focus();
            document.getElementById("show").innerHTML = "勿為空";
            return (false);
        }
        else
        {
            var timelinedata = new FormData($("#form")[0]);
            
            $.ajax({
                type:"POST",
                url:"ing",
                data: timelinedata,
                cache: false,
                contentType: false,
                processData: false,
                success:function(data){
                    $("#show").html(data);
                }
            });
        }
    
});</code>

ing

<code>$post = htmlspecialchars(preg_replace("/[\'\"]+/" , '' ,$_POST['post']),ENT_QUOTES);
$addtime = time();
          
$SQL_RE = mysql_query("SELECT * FROM `xxx`
WHERE `post` = '".$post."'
");    

if(mysql_num_rows($SQL_RE)==0)
{
        $allowTime = 60; 
        $allowT = md5();
      if (time() - $_SESSION[$allowT] > $allowTime)
      {
          $_SESSION[$allowT] = time(); 
          
          $sql = mysql_query("INSERT INTO `xxx`
          (`post`,`id`,`addtime`)
          VALUES
          ('".$post."','".$_SESSION['userid']."','".$addtime."') 
              ");

          echo '已發佈';
      }
      else
      {
          echo '過於頻繁,請稍候';
          
      
      }
}
else
{
    echo '你發佈了相同的內容';
}</code>

Da Sie Bilder hochladen können
, müssen Sie anscheinend enctype="multipart/form-data" und

in Ajax hinzufügen.
<code>contentType: false,
processData: false,</code>

Ich habe das Urteil zum Hochladen von Bildern in ing entfernt, weil ich es ausprobiert habe und es nichts damit zu tun hatte
Hier kommt das Problem
Genau wie das Urteil in meinem ing
Das Folgende ist, was ich beschrieben habe wie das, was passiert ist (Gleiches gilt für Firefox):

Ich habe einen Beitrag namens 000 veröffentlicht
Er wird in #show: Veröffentlicht erscheinen
In der nächsten Sekunde heißt es dann: Du hast den gleichen Inhalt veröffentlicht
Okay, dann drücke ich erneut auf „Veröffentlichen“ ( Der Inhalt ist das Gleiche wie 000)
Zu diesem Zeitpunkt wird „Sie haben den gleichen Inhalt veröffentlicht“ angezeigt, was korrekt ist
Aber zu diesem Zeitpunkt bewegt sich die Webseite plötzlich überhaupt nicht mehr und antwortet dann nach etwa 3 Sekunden (dort Es gibt keine Reaktion, wenn ich mich bewege. Die Handfläche erscheint auf der Maus, weil ich CSS plus Cursor:Zeiger habe, sodass ich beurteilen kann, ob die Webseite reagiert.)
Dann klicke ich erneut auf „Veröffentlichen“ (der Inhalt ist immer noch 000) und die Die Situation ist immer noch dieselbe wie in der vorherigen Zeile
Zu diesem Zeitpunkt änderte sich mein Inhalt zu 00000 und wurde erfolgreich gepostet
, aber er erschien immer noch in #show: Veröffentlicht
und änderte sich in der nächsten Sekunde zu: Sie den gleichen Inhalt veröffentlicht
und dann blieb die Webseite für weitere 3 Sekunden links und rechts hängen...

Ich verstehe also nicht, was das verursacht?
Ich denke

<code>contentType: false,
processData: false,</code>

Es hat viel damit zu tun
Dann konnte ich es nicht schaffen, nachdem ich es abgenommen hatte
Es scheint etwas mit dem Hochladen von Bildern zu tun zu haben
Denn wenn man nicht hochladen muss Bilder und reichen Sie einfach ein einfaches Formular ein, es ist in Ordnung
Dann ist diese Schreibmethode das Ergebnis meiner Suche auf Stackoverflow
Es ist so: http://stackoverflow.com/ques...
Nun ja.. . Ich bin neugierig, haben sie diese Situation nicht?
Ist das die falsche Schreibweise? Gibt es eine andere Möglichkeit, alle Werte direkt zu erfassen? Bild-Upload inklusive?

Antwortinhalt:

<code><form method="post" name="form" id="form" enctype="multipart/form-data">
              <textarea name="post" rows="3" maxlength="100"  id="post"></textarea></td>
                 
                  <input type="file" name="myFile">
                 
                          <button type="submit" id="post_btn">發佈</button> <span id="show"></span>
              </form>
              
$("#post_btn").click(function(e){
     e.preventDefault();

        if (post.value=='')
        {
            post.focus();
            document.getElementById("show").innerHTML = "勿為空";
            return (false);
        }
        else
        {
            var timelinedata = new FormData($("#form")[0]);
            
            $.ajax({
                type:"POST",
                url:"ing",
                data: timelinedata,
                cache: false,
                contentType: false,
                processData: false,
                success:function(data){
                    $("#show").html(data);
                }
            });
        }
    
});</code>

ing

<code>$post = htmlspecialchars(preg_replace("/[\'\"]+/" , '' ,$_POST['post']),ENT_QUOTES);
$addtime = time();
          
$SQL_RE = mysql_query("SELECT * FROM `xxx`
WHERE `post` = '".$post."'
");    

if(mysql_num_rows($SQL_RE)==0)
{
        $allowTime = 60; 
        $allowT = md5();
      if (time() - $_SESSION[$allowT] > $allowTime)
      {
          $_SESSION[$allowT] = time(); 
          
          $sql = mysql_query("INSERT INTO `xxx`
          (`post`,`id`,`addtime`)
          VALUES
          ('".$post."','".$_SESSION['userid']."','".$addtime."') 
              ");

          echo '已發佈';
      }
      else
      {
          echo '過於頻繁,請稍候';
          
      
      }
}
else
{
    echo '你發佈了相同的內容';
}</code>

Da Sie Bilder hochladen können
, müssen Sie anscheinend enctype="multipart/form-data" und

in Ajax hinzufügen.
<code>contentType: false,
processData: false,</code>

Ich habe das Urteil zum Hochladen von Bildern in ing entfernt, weil ich es ausprobiert habe und es nichts damit zu tun hatte
Hier kommt das Problem
Genau wie das Urteil in meinem ing
Das Folgende ist, was ich beschrieben habe wie das, was passiert ist (Gleiches gilt für Firefox):

Ich habe einen Beitrag namens 000 veröffentlicht
Er wird in #show: Veröffentlicht erscheinen
In der nächsten Sekunde heißt es dann: Du hast den gleichen Inhalt veröffentlicht
Okay, dann drücke ich erneut auf „Veröffentlichen“ ( Der Inhalt ist das Gleiche wie 000)
Zu diesem Zeitpunkt wird „Sie haben den gleichen Inhalt veröffentlicht“ angezeigt, was korrekt ist
Aber zu diesem Zeitpunkt bewegt sich die Webseite plötzlich überhaupt nicht mehr und antwortet dann nach etwa 3 Sekunden (dort Es gibt keine Reaktion, wenn ich mich bewege. Die Handfläche erscheint auf der Maus, weil ich CSS plus Cursor:Zeiger habe, sodass ich beurteilen kann, ob die Webseite reagiert.)
Dann klicke ich erneut auf „Veröffentlichen“ (der Inhalt ist immer noch 000) und die Die Situation ist immer noch dieselbe wie in der vorherigen Zeile
Zu diesem Zeitpunkt änderte sich mein Inhalt zu 00000 und wurde erfolgreich gepostet
, aber er erschien immer noch in #show: Veröffentlicht
und änderte sich in der nächsten Sekunde zu: Sie den gleichen Inhalt veröffentlicht
und dann blieb die Webseite für weitere 3 Sekunden links und rechts hängen...

Ich verstehe also nicht, was das verursacht?
Ich denke

<code>contentType: false,
processData: false,</code>

Es hat viel damit zu tun
Nachdem ich es dann abgenommen hatte, gelang es mir nicht
Es scheint etwas mit dem Hochladen von Bildern zu tun zu haben
Denn wenn man es nicht muss Laden Sie Bilder hoch und reichen Sie einfach ein einfaches Formular ein, es wird gut sein
Dann ist diese Schreibmethode das Ergebnis meiner Suche auf Stackoverflow
Es sieht so aus: http://stackoverflow.com/ques...
Nun... ich bin neugierig, haben sie diese Situation nicht?
Ist das die falsche Schreibweise? Gibt es eine andere Möglichkeit, alle Werte direkt zu erfassen? Bild-Upload inklusive?

Sie öffnen die F12-Entwicklertools Ihres Browsers und rufen die Registerkarte „Netzwerk“ auf. Klicken Sie dann erneut auf die Schaltfläche „Veröffentlichen“, um zu sehen, ob mehrere Anfragen vorliegen.

Ich verstehe nicht, kommen Sie aus Taiwan oder Hongkong und Macau? Warum verwenden Sie immer noch traditionelle chinesische Schriftzeichen zur Kommunikation? Festlandbewohner haben bereits vereinfachte chinesische Schriftzeichen verwendet

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn