2015-05-31 6 views
0

Я отправляю POST-запрос с помощью jQuery lib в PHP-скрипт, вы найдете скрипты ниже. Я получаю 500 Internal Server Error в результате, кто-то знает, как это исправить?500 (Внутренняя ошибка сервера) в jQuery POST

Как отправить форму:

$.post(
     "post.php", 
     $("#form").serialize() 
    ).done(function(data){ 
      generateFinishPage(data.link); 
    }); 

Мой post.php

<?php 
    error_reporting(E_ALL); 
    ini_set("display_errors", 1); 
    $pdo = new PDO('...'); 

    $error = Array(); 

    if(empty($_POST['link'])) 
     $error [] = 'Er is geen link geselecteerd!'; 

    if(empty($_POST['sitename'])) 
     $error [] = 'Er is geen domein geselecteerd!'; 

    if(empty($_POST['image'])) 
     $error [] = 'Er is geen image geselecteerd!'; 

    $selectQuery = $pdo->query('SELECT * FROM trolls WHERE url_text="' . $_POST['url'] . '" AND url_domein="' . $_POST["sitename"] . '"'); 
    if($selectQuery->rowCount() == 1) 
     $error [] = 'Dezelfde link bestaat al!'; 

    if(count($error) == 0){ 
     $query = $pdo->query('INSERT INTO trolls (created_time, swf_theme, url_text, url_domain, creator_ip, creator_name, creator_text, creator_email) 
      VALUES (:created_time, :swf_theme, :url_text, :url_domain, :creator_ip, :creator_name, :creator_text, :creator_email)'); 
     $query->execute(
      array(
       ':created_time'  => date('d-m-o'), 
       ':swf_theme'   => $_POST['image'] . ".swf", 
       ':url_text'    => explode('/', $_POST['url'])[1], 
       'url_domain'   => explode('/', explode(".", $_POST['url'])[1])[0], 
       ':creator_ip'   => $_SERVER['REMOTE_ADDR'], 
       ':creator_name' => $_POST['creator_name'], 
       ':creator_text'  => $_POST['creator_text'], 
       ':creator_email' => $_POST['creator_email'] 
      ) 
     ); 
     echo json_encode(array("link" => $_POST['url'])); 
    } else { 
     echo json_encode(array("link" => array($error)); 
    } 

    $pdo = null; 

форма данных, которая посылается:

Имя_узла: lnstagram.nl

ссылка: тест

изображение: анна

CREATOR_NAME: тест

CREATOR_EMAIL: [email protected]

creator_text: тест

Form Data

Спасибо!

+0

И что делают журналы сервера сказать? – VolenD

+0

@ user3584460 он находится на общем хостинге, где я их нахожу? – DevNiels

+0

В зависимости от типа хостинга/компании. Очень маловероятно, чтобы у них не было доступа к ним, поэтому вы можете обратиться за поддержкой, если вы не можете найти их в своей панели управления. – VolenD

ответ

0

Получите доступ к post.php напрямую, и u найдет настоящую ошибку. И не забудьте показать ошибку в верхней части Йор Post.php

error_reporting(E_ALL); nullini_set('display_errors', '1');

+0

Я получаю страницу с бланком, если я попробую это, извините забыл сказать это! – DevNiels

+0

Странно. Я не могу запросить ваш запрос pdo, чтобы убедиться, что ваш скрипт работает рядом с pdo queary, после if (count ($ error) == 0) {echo «query»; и запросите запрос внутри. Я предлагаю класс исключения pdo http://php.net/manual/en/class.pdoexception.php – cangak

2

проверить запрос на выборку .... что «url_domein» или «url_domain»?

Что вы пытаетесь сделать в своем методе вставки?

Я не видел никаких подготовленных утверждений Но вы вызвали метод execute?

$query->execute(
     array(
      ':created_time'  => date('d-m-o'), 
      ':swf_theme'   => $_POST['image'] . ".swf", 
      ':url_text'    => explode('/', $_POST['url'])[1], 
      'url_domain'   => explode('/', explode(".", $_POST['url'])[1])[0], 
      ':creator_ip'   => $_SERVER['REMOTE_ADDR'], 
      ':creator_name' => $_POST['creator_name'], 
      ':creator_text'  => $_POST['creator_text'], 
      ':creator_email' => $_POST['creator_email'] 
     ) 
    ); 

Попробуйте изменить запрос, как это ... использовать подготовить

$query = $pdo->prepare('INSERT INTO trolls (created_time, swf_theme, url_text, url_domain, creator_ip, creator_name, creator_text, creator_email) 
     VALUES (:created_time, :swf_theme, :url_text, :url_domain, :creator_ip, :creator_name, :creator_text, :creator_email)'); 

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

try { 
     // query here 
     } catch (PDOException $pe) { 
      die("Error:" . $pe->getMessage()); 
     } 
+0

Спасибо, что вы полностью его наблюдали! Я изменил его, а также изменил url_domein на url_domain в запросе select. По-прежнему появляется ошибка 500. – DevNiels

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