|
|
|
| Здравствуйте !У меня следующая проблема :пытаюсь отправлять AJAX - запросы на сервер ,при помощи функции ajax в jQuery,но вызывается функция error ., которая должна вызываться в случае ошибки .На сервере никаких ошибок нет(я проверил).В js файле все функции ,которые используются как обработчики некоторых событий тоже определены выше функции ajax.А вот в чем причина возникновения ошибки я так и не понял.Даже в консоле браузера нет ошибок ,,связанных с синтаксисом.Помогите пожалуйста разобраться . | |
|
|
|
|
|
|
|
для: olegvasil
(30.07.2014 в 20:53)
| | И каким образом помочь, такими же рассуждениями как у вас? | |
|
|
|
|
|
|
|
для: confirm
(31.07.2014 в 05:03)
| | Попробую по другому ввести вас в курс дела.
Скажу сразу ,что я использую для отправки ajax - запросов функцию ajax() которая есть в библиотеки jQuery.Этой функции в качестве объекта с настройками могут передаваться несколько событий ,например , я использую complete,success,error. С каждым из перечисленных выше событий связана отдельная функция .Все эти функции находятся выше определения функции ajax().Ну и вот ,когда я вызываю функцию ajax() , она постоянно вызывает функцию error .хотя не в js скрипте , не в принимающем запрос php скрипте ошибок нет.И где в данном случае искать ошибку я не знаю. | |
|
|
|
|
|
|
|
для: olegvasil
(31.07.2014 в 07:51)
| | Я знаю что такое Ajax из jQuey. От вас не рассказ требуется, по которому вам никто ничего ответит, а ваш код, в котором явно есть ошибки. Показывайте его, вот тогда можете рассчитывать и на какой-то ответ. | |
|
|
|
|
|
|
|
для: confirm
(31.07.2014 в 07:57)
| | Так и бы и сказали.Обычно код не кто не хочет смотреть
Код php скрипта , который принимает запрос
<?php
require_once "start.php";
$request = new Request();
$api = new API();
$result = false;
if ($request->func == "edit") $result = $api->edit($request->obj, $request->value, $request->name, $request->type);
elseif ($request->func == "delete") $result = $api->delete($request->obj, $request->id);
elseif ($request->func == "add_comment") $result = $api->addComment($request->parent_id, $request->article_id, $request->text);
elseif ($request->func == "load_menu_1") $result = $api->getAllElMenuOnType(1);
elseif ($request->func == "load_menu_2") $result = $api->getAllElMenuOnType(2);
elseif($request->func == "Add_New_Item_Menu") $result = $api->Add_New_Item_Menu($request->data,$request->data_info);
elseif($request->func == "deleteItemInMenu") echo 100;
elseif($request->func == "editItemInMenu") $result = $api->editItemInMenu($request->data_info, $request->data);
if ($result !== false) echo json_encode(array("r" => $result, "e" => false));
else echo json_encode(array("r" => $request->func , "e" => true));
?>
|
A вот код js файла , который отправляет запрос.
var load_first = null;
var load_type_menu = 1;
var type_el = 0;
var edit = false;
function genObj(func,data_info,data,param){
if(param) {
var obj = {
func : func,
data_info : data_info,
data : data
};
}
else {
var obj = {
func : func
};
}
return obj;
}
function clearMessage(){
$("#message").empty();
}
function setMessage(message){
$(".message").text(message);
}
function func_success_add(data){
var data = JSON.parse(data["r"]);
if(data.parent_id) addNewEl(data,true);
else addNewEl(data,false);
setMessage(data.message);
}
function getDataFromForm(){
var data = {
title : $(".title:eq(1)").val(),
alias : $(".link:eq(1)").val(),
meta_desc : $(".meta_desc:eq(1)").val(),
description : $(".description:eq(1)").val(),
meta_key : $(".meta_key:eq(1)").val(),
parent_name : (type_el == 2) ? $("#choose_section option:eq(" + $("#choose_section").val() +")").text() : 0
}
return JSON.stringify(data);
}
function toggleMenu(id){
$("#list_items div").remove();
ajaxSend(genObj("load_menu_" + id,"","",false),func_success);
}
if(load_first == null){
ajaxSend(genObj("load_menu_1","","",false),func_success);
load_first == true;
}
function dhEl(el , opt){
if(!opt) el.attr("style" , "display:none");
else if(opt === true) el.attr("style" , "display:block");
else el.attr("style" , "display:inline-block");
}
function resetForm(){
dhEl($("#fields"),false);
dhEl($("#choose_type"),false);
dhEl($("#choose_section"),false);
}
function hiddenFields(bul){
if(bul) dhEl($("#fields table tr:eq(2) td, #fields table tr:eq(3) td, #fields table tr:eq(4) td"),false);
else dhEl($("#fields table tr:eq(2) td , #fields table tr:eq(3) td, #fields table tr:eq(4) td"),true);
}
function showForm(){
resetForm();
if(load_type_menu == 1){
dhEl($("#choose_type"),true);
if(type_el == 1 || type_el == 2){
dhEl($("#fields"),true);
if(type_el == 2) {
dhEl($("#choose_section"),true);
$("#choose_section option").remove();
$("#list_items > .item > a").each(function(i){
$("#choose_section").append("<option value = " + i +">" + this.innerText + "</option>");
});
}
}
else dhEl($("#fields"),false);
hiddenFields(false);
}
else if(load_type_menu == 2){
dhEl($("#choose_type"),false);
dhEl($("#choose_section"),false);
dhEl($("#fields"),true);
hiddenFields(true);
}
}
$(function(){
$("#add_new_el").fancybox();
$("#add_new_el").click(function(){
showForm();
});
$("#choose_type").bind("change" , function(){
type_el = $(this).val();
showForm();
});
$("#choose_type_menu select").bind("change",function(){
load_type_menu = $(this).val();
toggleMenu(load_type_menu);
showForm();
});
showForm();
});
function sendFormEdit(){
var data = getDataFromForm();
}
function getTemplateEl(data,param){
var attr_id = (param) ? "id='item_" + data.id + "'" : "";
var new_str = "<div class = 'item' "+ attr_id +">";
new_str += "<a href = '" + data.link + "' >" + data.title + "</a>";
new_str += "<div class = 'functions''>";
new_str += "<a class = 'edit_item' href = '#edit_item' >Редактировать</a>\n";
new_str += "<a class = 'edit_delete' href = >Удалить</a>";
new_str += "</div>";
return new_str;
}
function addNewEl(data,param){
if(!param){
var str = getTemplateEl(data,true);
$("#list_items").append(str);
}
else{
var str = getTemplateEl(data,false);
$("#list_items > div[id=item_"+ data.parent_id).append(str);
}
if(data.categories) {
for(j = 0; j < data.categories.length;j++) {
var str = getTemplateEl(data.categories[j],false);
$("#list_items #item_" + data.categories[j].parent_id).append(str);
}
}
}
function func_success(data){
data = JSON.parse(data["r"]);
for(el in data) addNewEl(data[el]);
}
function func_error(x,xx){
alert(xx);
}
function searchEl(title){
$(".item > a").each(function(i){
if($(this).text() == title) return $(this);
});
}
function func_success_edit(data){
data = JSON.parse(data["r"]);
var el = searchEl(data.title);
$(el).attr("href",data.link);
$(el).attr("title",data.title);
setMessage(data.message);
}
function sendFormAdd(){
var data = getDataFromForm();
var data_info = (type_el == 1) ? "type_el=section" : (load_type_menu == 2) ? "type_el=item" : "type_el=category";
//$("body").empty().text(data);
ajaxSend(genObj("Add_New_Item_Menu",data_info,data,true),func_success_add);
}
function func_success_delete(data){
/*
data = JSON.parse(data["r"]);
var el = searchEl(data.title);
$(el).parent().remove();
setMessage(data.message);
*/
}
function deleteItem(obj){
var data_info = ($(obj).parent().parent().attr("id") == "") ? "type_el=category" : (load_type_menu == 2) ? "type_el=item" : "type_el=section";
data_info += "&title=" + $(obj).parent().parent().find(" > a").text();
var obj = {
func : "deleteItemInMenu",
data : data_info
};
ajaxSend(obj,func_success_delete);
}
function func_complete(){
showForm();
$(".edit_item").fancybox();
$("#edit_item > div").remove();
var form = $("#add_item form").clone();
form.find("select , h3").remove();
form.find("div").removeAttr("id").attr("style" , "display:block");
form.find("input[type='button']").attr("id","edit_el");
$("#edit_item").append(form.html());
$("#edit_el , #add_el , .edit_delete").unbind("click");
$("#edit_el").bind("click", function(){
sendFormEdit();
});
$("#add_el").bind("click" , function(){
sendFormAdd();
});
$(".edit_delete").bind("click" , function(){
deleteItem($(this));
});
}
function ajaxSend(data,f_s){
$.ajax({
url: "/api.php",
type: "POST",
data: (data),
dataType: "text",
error: func_error,
complete : func_complete,
success: function(result) {
var result = JSON.parse(result);
f_s(result);
}
});
}
/*
function func_complete(){
alert("complete");
}
*/
/*
function del(){
var obj = {
func : "deleteItemInMenu",
data_info : "type_el=category&title=Кармелита2"
};
ajaxSend(obj,func_success_delete);
}
del();
*/
|
| |
|
|
|
|
|
|
|
для: olegvasil
(31.07.2014 в 09:57)
| | Так не лучше, а так должно быть.
Наворочено чего-то не понять, ибо непосредственно отправка это всего лишь одна функция, а что означают остальные навороты...
Вот так проверяйте:
function ajaxSend(){
$.ajax({
url: "api.php", //зачем в путях слеш?
type: "POST",
data: {edit : значение для проверки, которое вы знаете}, //зачем тут у вас скобки?
dataType: "json",
success: function(d) {
alert(d);
}
});
}
|
вызвав функцию как угодно. Уж точно сервер ответит. А это означает, что ошибки ваши в остальных наворотах.
Получить форму как объект, для этого есть метод в jQuery, если ваш getDataFromForm для этого.
Поведение браузера при асинхронном запросе, если данные для него содержат ошибки, либо до запроса есть ошибки, как раз и может быть таким - молчок, а результата нет. Для проверки этого контролируйте сеть в отладчике.
А в секции РНР не лучше ли без многочисленных elseif? | |
|
|
|
|
|
|
|
для: olegvasil
(31.07.2014 в 07:51)
| | Ваш код представленный действительно вряд ли кто захочет смотреть, он не форматирован, а значит читать его трудно.
Ответил сюда, чтобы вы отредактировали свое сообщение, обрамив код BB-тегами CODE. | |
|
|
|
|
|
|
|
для: confirm
(31.07.2014 в 10:01)
| | Я нашел наконец-то ошибку. Не поверите она заключалось в том , что у ссылки , по которой происходил клик был пустой атрибут href и поэтому происходила вся эта ерунда . | |
|
|
|
|