#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"},