2011-12-27 1 views
0

Мне нужно использовать вызов $.ajax() в jQuery, чтобы опубликовать немного JSON для моего PHP-скрипта.Проблемы с вызовом jQuery AJAX (POST to PHP)

Я пробовал все, но ничего не работает, как хотелось бы. Я просто пытаюсь повторить var_dump массивов $ _POST/$ _ GET, но он возвращается пустым.

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, закодированный.

Код, вставленный в этот пост, является лишь одним из многих фрагментов, которые я пробовал, даже примеры из учебных пособий в Интернете не работают.

Может кто-нибудь, пожалуйста, дайте мне фрагмент, который, как вы знаете, работает, чтобы я мог попробовать? Отправка JSON через POST.

ответ

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

+0

Попробуйте удалить линию 'CONTENTTYPE' из опций '$ .ajax' или установите его в' 'application/x-www-form-urlencoded'' – bfavaretto

+0

Yeey! вот в чем проблема! Благодарю. Странно, что учебники не рассматривали его как проблему. – Josef

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

Спасибо. Но у меня нет никаких проблем при использовании «получить», не отправляя json. – Josef

Смежные вопросы