2014-09-20 47 views
0

的JSON是我的ajax:ajaxSubmit會與jqueryForm

$('#MyUploadForm').submit(function() { 

     $(this).ajaxSubmit({ 
      beforeSubmit: beforeSubmit 
      ,dataType: 'json' 
      ,uploadProgress: OnProgress 
      ,resetForm: true 
      ,success: function(data) { 
       console.log(data) 
       if(data.error) { 
        $("#output").css('color', 'red'); 
       } 
       else { 
        $("#output").css('color', 'green'); 
       } 
       $("#output").html(data.msg); 
       $('#submit-btn').show(); //hide submit button 
       $('#loading-img').hide(); //hide submit button 
       $('#progressbox').delay(10000).fadeOut(); //hide progress bar 
      } 
      ,error: function(xhr){ 
       console.log(xhr); 
      } 
     }); 
     return false; 

    }); 

這裏是我的html:

<form action="ss.php" method="post" enctype="multipart/form-data" id="MyUploadForm"> 
      <input name="FileInput" id="FileInput" type="file"/> 
      <input name="f-name" id="f-name" type="hidden"/> 
      <input type="submit" id="submit-btn" value="Upload"/> 

     </form> 

PHP:

return json_encode(array(
    'error'=> true 
,'msg' => 'Invalid request!' 
)); 

我得到錯誤回調。我得到這個在console.log的錯誤回調函數:

Object { readyState=4, status=200, statusText="OK", more...} 

可能是我失去了一些東西,找不到它。爲什麼它沒有進入成功回調函數。

幫助表示讚賞

+2

使用'echo json_encode(...)'和'die()'或者只是'die(json_encode(...));'insted of'return'。 – marian0 2014-09-20 12:25:56

+0

(console.log(data))在控制檯中得到了什麼? – Tasos 2014-09-20 12:31:57

+1

澄清@ marian0的評論'return'不會將數據返回給瀏覽器,您應該'echo'json編碼的數據以在瀏覽器中獲得響應。 – bansi 2014-09-20 12:35:06

回答

0

正如@ marian0評論和@bansi解釋它的工作原理。

更改:

return json_encode(array(
    'error'=> true 
,'msg' => 'Invalid request!' 
)); 

到:

echo json_encode(array(
    'error'=> true 
,'msg' => 'Invalid request!' 
)); 

回報沒有返回回到瀏覽器的響應。