2017-10-11 8 views
0

をアップロードされていない場合でも、これは私のHTMLコードで設定するには、ファイルアップロードのフラグを設定する:PHPコードは常に何も

<form id="broadcastForm" onSubmit="return false;" enctype="multipart/form-data"> 
    <div> 
    <label for="image">Select an Image to Broadcast (Optional) <span class="text-danger">[Make sure image size is less than 500Kb]</span></label> 
    <input type="file" accept="image/*" class="btn btn-primary" id="image" name="image[]" class="fileinput" style="margin-top: 10px;" /> 
    <div class="preview_box"> 
     <img id="preview_img" src=""/> 
    </div> 
    </div> 
    <textarea class="textarea form-control" name="message" id="message" placeholder="Enter Message To Broadcast.." style="width: 100%; height: 125px; font-size: 14px; line-height: 18px; border: 1px solid #dddddd; padding: 10px;"></textarea> 
</form> 

これは私のjQueryのコードです:

$("button#brodcastMessage").click(function() 
    { 
     var proceed = true, image = $("#image").val(), message = $("#message").val(), type = "", dataSend = ""; 
     var formData = new FormData(); 

     if(image == "" && message == "" || image == null && message == null) 
      { 
       proceed = false; 
       swal({ 
         title: "Error Sending Email!", 
         text: "To send Email Broadcast to your subscribers you need to either select an image or enter the broadcast message. Both the fields are blank!", 
         icon: "error", 
        }); 
      } 

     else if(image == "" || image == null && message != "") 
      { 
       proceed = true; 
       formData.append('message', message); 
       formData.append('image', ""); 
      } 

     else if(message == "" || message == null && image != "") 
      { 
       proceed = true; 
       formData.append('image', $('#image')[0].files[0]); 
      } 

     else if(message != "" && image != "") 
      { 
       proceed = true; 
       formData.append('message', message); 
       formData.append('image', $('#image')[0].files[0]); 
      } 

     if(proceed) 
      { 
       $("button#brodcastMessage").addClass('disabled').attr('disabled', 'true').html("Sending Mail Please Wait..."); 

       $.ajax({ 
          url: '/ajax?id=broadcast', 
          type: 'POST', 
          data: formData, 
          cache: false, 
          contentType: false, 
          processData: false, 
          success:function(response) 
           { 
            resp = response.slice(-3); //read last three characters of a string 

            if(resp == "ack") 
             { 
              $("form#upload_form").trigger('reset'); 
              $("#image").val(""); 
              $('#preview_img').attr('src', ''); 
              $("button#brodcastMessage").removeClass('disabled').html('Send <i class="fa fa-arrow-circle-right"></i>').removeAttr('disabled'); 
              $("form#emailFormSend").trigger('reset'); 
              swal({ 
                title: "Message Sent!", 
                icon: "success", 
               }); 
             } 
            else if(resp == "nak") 
             { 
              $("button#brodcastMessage").removeClass('disabled').html('Send <i class="fa fa-arrow-circle-right"></i>').removeAttr('disabled'); 
              swal({ 
                title: "Error Sending Email!", 
                text: "Please Try Again!", 
                icon: "error", 
               }); 
             } 
            else 
             { 
              $("button#brodcastMessage").removeClass('disabled').html('Send <i class="fa fa-arrow-circle-right"></i>').removeAttr('disabled'); 
              swal({ 
                title: "Error Log!", 
                text: response, 
                icon: "error", 
               }); 
             } 
           }, 
          error:function(response) 
           { 
            $("button#brodcastMessage").removeClass('disabled').html('Send <i class="fa fa-arrow-circle-right"></i>').removeAttr('disabled'); 
            swal({ 
              title: "Network Error!", 
              text: "There was an Error Processing your request! Please try again after some time!", 
              icon: "error", 
             }); 
           } 
         }); 
      } 
    }); 

これは私のPHPコードです:

if($_GET['id'] == "broadcast") 
    { 
     if($_POST['message'] == "" || $_POST['message'] == null && isset($_FILES) && !empty($_FILES)) 
      { 
       //file variable is set 
       $counter = "file"; 
      } 

     if(isset($_FILES) && empty($_FILES) && $_POST['message'] != "" || $_POST['message'] != null) 
      { 
       //message varibale is set 
       $counter = "message"; 
      } 

     if(isset($_FILES) && !empty($_FILES) && $_POST['message'] != "" || $_POST['message'] != null) 
      { 
       //both are present 
       $counter = "both"; 
      } 

     echo $counter; 
     exit(); 
    } 

こんにちは、私はajaxファイルのアップロードをしようとしています。今、私は2入力4つの条件

1.) Either both of them are blank (i have handled this on client side) 
2.) Either I only want to broadcast message but not image 
3.) Either I want to broadcast image but not message 
4.) Either I want to broadcast both image and message 

が可能になりましたので、私は問題がときがあるということであるPHPとjQuery側の検証でこれを設定している

1.) Select image & 
2.) Enter message 

を提供しているブロードキャストメッセージを作成していますメッセージが設定され、ファイルノートが設定されている場合、PHPスクリプトは画像を提供し、エラーは未定義の変数です。私のスクリプトが何をしているか

は、ファイルがfileエコースクリプトをアップロードされていないと私はNYのイメージをuploadedaしていないと、テキストのみのメッセージは、それがbothエコー設定されている場合、私は過去4時間ので、ここで立ち往生していたとしてもです。私のスクリプトが間違っているか、ロジックがうまくいかないことはわかりません。誰もこの論理で私を助けることができますか? false

+0

'print_r($ _ FILES);は何を出力しますか? – bassxzero

+0

$( "#image")とは何ですか?val()はAJAXリクエストを送信する前と同じですか? image []という名前の画像入力はなぜですか? –

+0

@ i-man 'image []'は、imageという名前のファイルの配列を作成するために使用されます。 – bassxzero

答えて

1

はこれを試してみてください

+0

を示し、その空I-男@'アレイ() ' –

+0

PHPやロジックにエラーがありました。そのため、bassxzeroは、ファイルがアップロードされたかどうか、または$ has_messageや$ has_fileという変数に送信されたメッセージを適切に判断するロジックを修正して修正しました。そうすれば、毎回ロジックを再ハッシュしなくても、以下の4つのケースをテストできます。 –

0

isset($_FILES)はそうでない場合は、アップロードされたファイルがない場合true

empty($_FILES)trueで常にあります。

<?php 
    if($_GET['id'] == "broadcast") 
    { 
     $has_message = (isset($_POST['message']) && (strlen(trim($_POST['message'])) >0)); 
     $has_file = (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK); 

     if(!$has_message && $has_file) 
     { 
      //file variable is set 
      $counter = "file"; 
     } 
     else if($has_message && !$has_file) 
     { 
      //message varibale is set 
      $counter = "message"; 
     } 
     else if($has_message && $has_file) 
     { 
      //both are present 
      $counter = "both"; 
     } 
     else { 
      $counter = "neither"; 
     } 

     echo $counter; 
     exit(); 
    } 
関連する問題