2015-11-14 183 views
1

代碼中的index.php:無法訪問哈希值

內trash.php
<!DOCTYPE html> 
<html lang="en-us" dir="ltr"> 
    <head> 
     <meta charset="utf-8" /> 
     <script type="text/javascript" src="js/jquery-2.1.1.min.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function(){ 
       $(".trashitem").click(function(e) { 
        e.preventDefault(); 
        var trashlink = $(this); 
        var res = confirm("Are you sure you want to trash the selected item?"); 
        if (res != false) { 
         var trashurl = trashlink.attr("href"); 
         var trashid = trashlink.data("id"); 
         $.ajax({ 
          url: trashurl, 
          type: "POST", 
          data: { "trashid": trashid }, 
          datatype: "json", 
          success: function(response) { 
           console.log(response); // Output: {"success":true,"error":false} 
           console.log(response.success); // Output: undefined 
           if (response.success == true) { 
            trashlink.parents("li").fadeOut(300, function() { 
             trashlink.parents("li").remove(); 
            }); 
           } 
          } 
         }); 
        } 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <ul> 
      <li><a class="trashitem text-color-alert" href="trash.php" data-id="20">Trash</a></li> 
      <li>This is undeletable item.</li> 
     </ul> 
    </body> 
</html> 

代碼是:

<?php 
    $id = $_POST['trashid']; 
    $error = false; 
    $success = false; 
    if ($id) { 
    $success = trash_post($id); 
    $response = array(
     'success' => $success, 
     'error' => $error 
    ); 
    } 
    echo json_encode($response); 

    function trash_post($target_id) { 
    return true; 
    } 

請看第一代碼片段中的index.php其中:

console.log(response); // Output: {"success":true,"error":false} 

但是當我想訪問success

console.log(response.success); // undefined 

爲什麼它給我undefined而不是true?我遇到過類似於我的Stackoverflow上的一些帖子,但它們對我沒有幫助。

+1

做了一些修改,以更好地解釋這個問題,這個問題。 –

回答

1

大概response只是一個字符串而不是一個Object

嘗試

var a = JSON.parse(response); 
console.log(a.success); 

或嘗試在你的php文件

header('Content-Type: application/json'); 

本集的內容類型的頂部添加此php文件爲JSON

1

嘗試使用此

response['success'] == true 

而不是

response.success == true 
0

儘量不要用成功或錯誤標誌你的迴應,而不是利用狀態代碼,並建立一個適當的反應。你可以使用http_response_code()函數來做到這一點。例如:

<?php 
http_response_code(200); 
?> 

然後妥善處理您的Ajax調用的響應,這樣做:

$.ajax({ 
    url: trashurl, 
    type: "POST", 
    data: { "trashid": trashid }, 
    datatype: "json" 
}) 
    .done(function (response) { //response status code is 200 
     trashlink.parents("li").fadeOut(300, function() { 
      trashlink.parents("li").remove(); 
     }); 
    }) 
    .fail(function (xh) { 
     //Handle failed response 
    });