2015-05-12 2 views
-2

Я пробовал размещать это, но он помечен как php, поэтому я надеюсь, что на этот раз это будет ajax или Jquery, надеюсь, получить больше ответов.Проблема с использованием Ajax для добавления в базу данных

У меня возникла проблема с моей функцией добавления Ajax примерно на неделю. Код, который я использую для этого, работает в другом приложении без каких-либо проблем. Я надеюсь, что кто-то сможет понять, допустил ли я какие-либо ошибки или что может быть причиной этого. Я смог добавлять элементы в базу данных с помощью команд cURL без каких-либо проблем, поэтому это не код PHP, но я также включу это для 100% -ной ясности. Я использую Слим Framework

PHP код

$app->post('/addItems/', 'addItems'); 
function addItems() 
{ 
    $request = \Slim\Slim::getInstance()->request(); 
    $q = json_decode($request->getBody()); 
    $sql = "INSERT INTO items(item1, item2, item3, item4, item5, item6, item7, item8, item9) VALUES (:item1, :item2, :item3, :item4, :item5, :item6, :item7, :item8, :item9)"; 
    try{ 
     $db = getConnection(); 
     $stmt=$db->prepare($sql); 
     $stmt->bindParam("item1", $q->item1); 
     $stmt->bindParam("item2", $q->item2); 
     $stmt->bindParam("item3", $q->item3); 
     $stmt->bindParam("item4", $q->item4); 
     $stmt->bindParam("item5", $q->item5); 
     $stmt->bindParam("item6", $q->item6); 
     $stmt->bindParam("item7", $q->item7); 
     $stmt->bindParam("item8", $q->item8); 
     $stmt->bindParam("item9", $q->item9); 
     $stmt->execute(); 
     $db = null; 
    } 
    catch(PDOException $e){ 
     echo $e->getMessage(); 
    } 
} 

Ajax

$("#send").click(function(){ 
    $.ajax({ 
     type: 'POST', 
     contentType: "application/json", 
     data: addProject(), 
     url: rootURL + "/addItems/", 
     dataType: "json", 
     success: function(data) 
     { 
      alert("Data Added"); 
     }, 
     error: function(data) 
     { 
      alert("Error"); 
     } 
    }); 
}); 

function addProject() 
{ 
    return JSON.stringify({ 
    "item1": item1, 
    "item2": item2, 
    "item3": item3, 
    "item4": item4, 
    "item5": item5, 
    "item6": item6, 
    "item7": item7, 
    "item8": item8, 
    "item9": item9, 
    }); 
} 

Все переменные имеют пункт строки, назначенные им

Любая помощь будет оценена.

Майк

+0

В чем проблема? Ajax не работает? Сервер получает данные, но затем элементы не добавляются в DB Or ... ??? – Samurai

+3

Так в чем проблема? Что ты сделал, чтобы сузить его? Посмотрите на инструменты разработчика браузера. Есть ли ошибки в консоли? Отформатирован ли запрос так, как вы ожидаете? Получает ли $ request-> getBody() ожидаемое значение, если вы его эхо? Как насчет $ q-> item1? Исключено ли исключение PDO? Какую ошибку он поднимает? – Quentin

+0

Он стреляет прямо к ошибке. Насколько я могу судить, он достигает dataType, но он обходит успех. PHP работает отлично, как я сказал в OP. Проблема в Ajax, но я не знаю, что вызывает ее. – user3618687

ответ

0

Я принимаю дикое предположение здесь, но вместо того, чтобы использовать функцию addProject(), чтобы вернуть данные в запросе Ajax сам, вы можете попробовать называть его перед вызовом AJAX и сохранить его в переменной затем используйте эту переменную вместо самой функции.

+0

Кажется, чище использовать функцию. Но я проверю это, дело в том, что (с несколькими переменными модификациями) этот же код работает для другого приложения. – user3618687

+0

Я столкнулся с проблемами в javascript, которые обычно не бывают на наших бэкэнд-языках из-за природы, вызванной событиями. Попробуйте один раз и дайте мне знать результаты. Спасибо Кроме того, я предлагаю предположить, что вы не получаете данные в бэкэнд с помощью кода js. Вы упомянули, что cURL работает так, как ожидалось. –

+0

Я просто попробовал. Тот же результат – user3618687

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