2011-12-27 79 views
0

我需要在jQuery中使用$.ajax()調用來向我的PHP腳本發送一點JSON。jQuery AJAX調用(POST to PHP)問題

我已經嘗試了一切,但沒有任何作品,因爲我想它。我只是嘗試回顯$ _POST/$ _ GET數組的var_dump,但它回來了。

var myJSONObject = {"bindings": [{"conversation": _conid} ]}; 
var obj = $.toJSON(myJSONObject); 

$.ajax({ 
    type: "POST", 
    url: "./code/ajax/fetch_messages.php", 
    data: obj, 
    async:true, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(data) 
    { 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) 
    { 
    }, 
    beforeSend: function (XMLHttpRequest) 
    { 

    }, 
    complete: function (XMLHttpRequest, textStatus) 
    { 
    }}); 

我可以看到,職位是通過查找標題製作:

{ 「綁定」:[{ 「對話」: 「38x001c61450ad4d5abd47c37408e8236eb5427f54e2930000306882646e4016c5f8ecf8e00a18a26ab3b6d07f6727bd187625daaedf951f93072d54d59e300e100」}]}

PHP:

echo var_dump($_POST); 

使用$.post()調用時,一切正常,但我總是遇到問題時我嘗試切換到$.ajax。我需要使用它來檢索UTF-8編碼的響應。

粘貼在這篇文章中的代碼只是我嘗試過的很多代碼片段中的一個,甚至連網上教程的示例都不起作用。

有人能給我一個你知道工作的片段,所以我可以試試嗎?通過POST發送JSON。

回答

1

我認爲你必須給你的JSON字符串鍵,這樣你就可以得到它的另一面(PHP):

data: {"myjson": obj}, 

然後在PHP這將是$_POST['myjson']

+0

不,這沒有奏效。它改變從JSON發送報頭的格式,以 myjson =%7B%22bindings%22%3A%5B%7B%22conversation%22%3A%2238x001c61450ad4d5abd47c37408e8236eb5427f54e2930000306882646e4016c5f8ecf8e00a18a26ab3b6d07f6727bd187625daaedf951f93072d54d59e300e100%22%7D%5D%7D – Josef 2011-12-27 14:01:07

+0

嘗試刪除 '的contentType' 線從'$ .ajax'選項,或者將其設置爲''application/x-www-form-urlencoded'' – bfavaretto 2011-12-27 14:03:52

+0

Yeey!這是問題!謝謝。奇怪的是,教程沒有把它看作是一個問題。 – Josef 2011-12-27 14:08:00

1
下面

是切片我的例程,它工作正常:

var data = 'post_type=' + post_type.val() + '&page_id=' + 
page_id.val() + '&home_page=' 
+ home_page.attr('checked') + '&archive_page=' + 
archive_page.attr('checked') + '&search_page=' + 
    search_page.attr('checked'); 


    //start the ajax 
     $.ajax({ 
      //this is the php file that processes the data and send mail 
      url: "?service=set_data", 

      //GET method is used 
      type: "GET", 

      //pass the data   
      data: data,  

      //Do not cache the page 
      cache: true, 

      //success 
      success: function (html) {       
        $(".no-items").hide("slow"); 
        $("#list_table").append(html).hide().slideDown('slow');    
      }  
     }); 
+0

謝謝。但是在使用「get」不發送json時,我沒有任何問題。 – Josef 2011-12-27 14:00:34