Jquery что не так с этой функцией

#jquery #json #post

#jquery #json #Публикация

Вопрос:

редактировать: мой скрипт вызывается кнопкой: $("#btnLogout").click(function() { the ajax here

мне интересно, есть ли что-то не так с этим:

         $.ajax({
      contentType: "application/json; charset=utf-8",
      data: {"fname":"123456"},
      dataType: "json",
      type: "POST",
      //url: "PersonService.asmx/AddPerson"
      url: "http://mark:123456@interfaces.local/users/145198/users/update"
    });
  

похоже, что она не работает, и я не получаю никаких ошибок, поэтому я могу видеть, что не так.

я хочу изменить запись из моей базы данных значениями из data

Спасибо


хорошо, я нашел свой ответ с arma's помощью. type: "PUT", команда предназначена для изменения чего-либо. type: "POST", команда предназначена для создания / добавления чего-либо.

 var mydata = {"fname":"bobworth"};
$.ajax({
type: "PUT",
processData : false,
data: JSON.stringify(mydata),
dataType: "json",
url: "http://www.xxx.com/users/",
contentType: "application/json; charset=utf-8",
username: "mark",
password: "123456",
success: function(t){    alert(t);  },
error: function(jqXHR, textStatus, error){
alert("jqXHR:" jqXHR.status " txtStatus:" textStatus " Error:" error);  }
});
  

спасибо всем.

Комментарии:

1. Используете ли вы Firebug ?

Ответ №1:

Проблема здесь в contentType: "application/json; charset=utf-8", не знаю, что вы делаете на стороне сервера, но по умолчанию ‘application/x-www-form-urlencoded’ — это почти всегда то, что вы хотите использовать. Кроме того, содержимое всегда отправляется в UTF-8, поэтому вам не нужно это указывать.

Попробуйте это:

 $.ajax({
  data: {"fname":"123456"},
  dataType: "jsonp",
  type: "POST",
  //url: "PersonService.asmx/AddPerson"
  url: "http://mark:123456@interfaces.local/users/145198/users/update",

  success: function(t){
    alert(t);
  },

  error: function(jqXHR, textStatus, error){
    alert("jqXHR:" jqXHR.status " txtStatus:" textStatus " Error:" error);
  }
});
  

Просто повторите что-нибудь, и вы должны увидеть, нормально ли это работает.

И для сервера (я знаю только php :)):

 $output = json_encode("myresponse_or_arrays");
if(isset($_POST['callback'])){
   $final = $_POST['callback']."(".$output.")";
}
echo $final; // This without any kind of checks or w/e ofc
  

Комментарии:

1. хм, у меня все отлично работает с 1.5.2 jquery и php. Может быть, проблема с URL?

2. при использовании curl POST работает. URL в порядке, я его тестирую

3. Должно быть, это что-то забавное, поскольку я могу заставить этот пример работать во всех моих браузерах, начиная с jquery 1.3.2 (даже не пробовал ранее). Кстати, URL, который вы пытаетесь использовать, не является локальным, чтобы вы использовали там полную строку URL? Если это так, вам нужна дополнительная настройка crossDomain=true (но обычно это устанавливается по умолчанию)

4. как вы думаете, я могу использовать username: "mark" и password: "123456" и url" "/users/145198/users/update"

5. ОК. я вижу эту ошибку Object { readyState=4, status=0, statusText="error"} и предупреждение — это [object Object] что все это значит?

Ответ №2:

 $.ajax({
      data: { fname: "123456" },
      type: "POST",
      url: "http://mark:123456@interfaces.local/users/145198/users/update"
});
  

И убедитесь, что url находится в том же домене, что и ваша страница

Комментарии:

1. есть ли у вас там success свойство?

2. я добавил одну, но никакого движения, она полностью мертва

3. да, это на том же сервере.. проблема в том, что я не вижу, в чем проблема

4. вы действительно видите, что запрос выполняется? как в консоли? возможно, что-то ломается еще до того, как вы перейдете к этому вызову

Ответ №3:

  • как вы вызываете этот метод $.ajax? может быть, вы просто не вызываете ее?
  • я предполагаю, что interfaces.local — это запись файла hosts, указывающая на ваш локальный компьютер?

сообщение arma выглядит довольно хорошо, вы получаете ошибки javascript? какой браузер вы используете и какую ОС?

используйте firebug или chromes dom inpsector и добавьте несколько записей console.log() до ее вызова и после, чтобы вы могли хотя бы знать, что она попала в этот фрагмент кода?

Комментарии:

1. я вызываю скрипт с помощью кнопки $("#save").click(function() { ajax here . url находится на одном компьютере рядом со мной, я использую его как временный сервер. firebug не показывает никаких ошибок js и не показывает POST’s. Должно быть, я последний человек, у которого такая проблема

Ответ №4:

Изменить :

 data: {"fname":"123456"},
  

Для

 data: {fname:"123456"},