2012-03-27 258 views
0

我向服務器發送該呼叫:發送JSON數據到PHP Web服務

var Message = {}; 
Message['islands'] = '1-15-13'; 
Message['newMessageText'] = 'this is test message'; 
$.ajax({ 
    url: "sendnote.php", 
    type: "POST", 
    data: Message, 
    dataType: "json", 
    contentType: "charset=utf-8", 
    success: function (data) { 
     alert(data["result"]); 
    }, 
    error: function (data) { 
     alert(data["result"]); 
    } 
}); 

,並在服務器上(sendnote.php)我有

print_r($_POST); 

只是爲了檢查我得到了什麼,但在Firebug中檢查響應後,我發現這個數組是空的。

我在做什麼錯誤的發送數據?

在此先感謝!

PS我已經檢查了此主題的上一篇文章,但仍然有問題。

+0

嗯,你是如何得到數據[「結果」]? sendnote.php腳本中是否有更多內容沒有顯示?或者它只是print_r($ _ POST)? – Gohn67 2012-03-27 06:27:02

+0

當我運行該代碼時,可以看到正在發佈的數據。 – Quentin 2012-03-27 06:27:47

+0

昆汀,你是對的,我也看到了,但在Firebug中,我發現我的$ _POST是空的。那就是問題所在。這就是爲什麼我只是print_r($ _ POST) – 2012-03-27 07:14:53

回答

1

的問題是將contentType

試試這個:

jQuery的

$(document).ready(function(){ 
var Message = {}; 
    Message['islands'] = "1-15-13"; 
    Message['newMessageText'] = 'this is test message'; 

$.ajax({ 
     url: "sendnote.php", 
     type: "POST", 
     data: Message, 
     dataType: "json", 
     success:function(data) { 
      alert("Islands: "+data.islands+", Message: "+data.newMessageText); 
      }, 
     error:function(data) { 
      alert('error'); 
     } }); 
}); 

PHP

<?php 
    echo json_encode($_POST); 
?> 
1

print_r($_POST)不給出JSON響應。你甚至知道當不使用AJAX時請求的實際回覆是什麼樣的?

嘗試echo json_encode($_POST); - 這應該打印出有效的JSON。

或我想補充一點,你可能已經忘記了PHP的<?php ?>打開和關閉標籤

+0

我認爲他正在檢查Firebug中的ajax請求。但是,是的,我認爲你是正確的,如果sendnote.php只是print_r($ POST); – Gohn67 2012-03-27 06:29:16

+0

Gohn67,你是對的。我只是在Firebug中檢查$ _POST。我在我的代碼$ jsonresponse = json_encode($ _ POST)和其他代碼創建JSON響應。在客戶端,我收到JSON響應,顯然是空的$ _POST結果。 – 2012-03-27 07:19:51

+0

@DevetiPutnik你可以發佈'sendnote.php'中的所有代碼嗎? – Joseph 2012-03-27 07:21:05