2014-01-26 5 views
0

У меня есть АЯКС вызов:Как получилось сообщение после моего вызова ajax?

function change(x){ 
    var id=x; 
    alert(id); 
    $.ajax({ 
     url: "http://localhost/kidsKnitsDB/edit.php", 
     type: "post", 
     data: JSON.stringify(id), 
     beforeSend: function(response){alert('Sending');}, 
      success: function(response){ alert('success');}, 
      error: function(response){alert('failed');}, 
      complete: function(response){window.location="http://localhost/kidsKnitsDB/edit.php";}, 
    }); 
} 

Который получает данные от этого:

<?php for($r=0; $r<count($result); $r++){?> 
    <tr> 
     <?php for($c=0; $c<9; $c++){?> 
      <td><?php echo $result[$r][$c];?></td> 
     <?php }?> 
     <td><button name="edit<?php echo $r;?>" onclick="change(<?php echo $result[$r][0];?>)">edit</button></td> 
    </tr> 
<?php }?> 

и она должна быть проводки на:

<?php 
    $db= new PDO("mysql:host=example;dbname=example", "root", "example"); 
    $id=$_POST['id']; 
    $query= $db->prepare("SELECT * FROM table WHERE Id = :parameter"); 
    $query->bindParam(':parameter', $id, PDO::PARAM_STR); 
    $query->execute(); 
    $result=$query->fetch(); 
    $name=$result['Name']; 
?> 
<script type="text/javascript">alert(<?php echo $id;?>);</script> 
<h1>Edit for <?php echo $name;?></h1> 
</br> 
<form id="editForm" action="sucess.php" method="POST"> 
    <lable>sale price</lable> 
    <input type="number" id="salePrice" name="salePrice"> 
    </br> 
    <lable>cost</lable> 
    <input type="number" id="cost" name="cost"> 
    </br> 
    <lable>contents</lable> 
    <input type="text" id="contents" name="contents"> 
    </br> 
    <lable>on sale</lable> 
    <input type="checkbox" id="onSale" name="onSale"> 
    </br> 
    <lable>image</lable> 
    <input type="image" id="image" name="image"> 
    </br> 
    <lable>active</lable> 
    <input type="checkbox" id="active" name="active"> 
    </br> 
</form> 

Однако $ ID пусто , Я считаю, что это из-за вызова ajax, но я не уверен. Если кто-то может помочь, было бы здорово.

+0

Вы просто отправляете число, а не объект, поэтому PHP-код не знает, что вы называете его id. – some

+0

превратит его в 'data: {'id': id}' work? –

+0

Наверное, см. Мой ответ. – some

ответ

1

Первая проблема

Вы просто отправив номер, а не объект, поэтому PHP-код не знаю, что вы называете его идентификатор.

Изменить

function change(x){ 
    var id=x; 

Для

function change(x){ 
    var id={id:x}; 

Вторая проблема

этот кусок кода:

complete: function(response){window.location="http://localhost/kidsKnitsDB/edit.php";} 

вы выполняете перенаправление после завершения ajax-вызова.

Это то, что происходит:

  1. Первый Ajax-запрос отправляется на сервер. Поскольку вы исправили первую проблему, теперь она получает номер в post-variable с именем id.
  2. Сервер создает страницу и дает ее в качестве ответа на ваш ajax-вызов.
  3. Когда вызов ajax завершен, вы вручную перенаправляете ту же страницу, на которую вы только что отправили ajax-запрос, но вы делаете это без предоставления каких-либо переменных.
  4. Браузер загружает страницу, но поскольку в запросе не указан идентификатор, идентификатор пуст.

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

[Sun Jan 26 19:08:29 2014] Array\n(\n [id] => 2\n)\n 
[Sun Jan 26 19:08:30 2014] Array\n(\n)\n 

Я думаю, что вызов AJAX делает его более сложным чем необходимо в этом случае. Проще сделать ссылку на http://localhost/kidsKnitsDB/edit.php?id=x, где x - это число. Затем вы должны также изменить $ _POST на $ _GET в php-коде.

Если вы все еще хотите использовать AJAX, вы должны вставить ответ, который вы получаете от запроса где-то на странице, и не выполнять перенаправление, как сейчас.

+0

Нет, это все еще пусто, хотя я чувствую, что ты прав, проблема сохраняется. –

+0

В вашем PHP-коде, который обрабатывает сообщение, выполните 'error_log (print_r ($ _ POST, true));' и проверьте свой error_log для каких переменных у вас есть (или перепишите свой javascript-запрос, чтобы вы могли увидеть результат и распечатать результат) – some

+0

Это то, что показывает журнал ошибок [Sun Jan 26 19:08:29 2014] [error] [client 127.0.0.1] Array \ n (\ n [id] => 2 \ n) \ n, referer : http: //localhost/kidsKnitsDB/index.php [вс 26 янв 19:08:30 2014] [ошибка] [клиент 127.0.0.1] PHP Примечание: неопределенный индекс: id в/var/www/kidsKnitsDB/edit. php в строке 13, referer: http: //localhost/kidsKnitsDB/index.php [вс 26 янв 19:08:30 2014] [ошибка] [клиент 127.0.0.1] Массив \ n (\ n) \ n, референт : http: // localhost/kidsKnitsDB/index.php' –

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