2011-12-27 80 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