2013-09-29 5 views
1

Я новичок в AJAX, поэтому я знаю, что в моем коде может быть глупая ошибка, но в любом случае я продолжу.jQuery Ajax не отправляется в файл PHP

У меня есть функция, созданная, когда вы нажимаете кнопку. Функция вызывает .ajax() метод jquery. Я отправляю данные в файл с именем «delete_post.php».

HTML:

<button class="btn btn-primary" onclick="deletePost(<?php echo $_GET["id"]; ?>);">Yes</button> 

Приведенный выше код работает.

JS:

function deletePost(postid) { 
    $.ajax({ 
     type: 'post', 
     url: "delete_post.php?id="+postid, 
     success: function(data) { 
      if(data.error == true) console.log('error'); 
        else console.log('problem?'); 
     } 
    }); 
} 

выше код вызова функции .ajax() но не регистрирует 'проблема?' в консоль.

Вот PHP файл:

<?php 
require_once '...'; 
if(isset($_GET["id"])) { 
    $id = $_GET["id"]; 
    echo "YEAH!"; 
} else { 
    header("location: index.php"); 
} 
?> 

Что проблема и как я могу это исправить?

+0

ли вы пытаетесь войти 'data' сам ? –

+0

нет, данные не JSON. –

+0

@ JakubMichálek что-то регистрируется, но ничего не отображается –

ответ

4

, как мы уже говорили в стороне чата, вы можете использовать его как это:

JS:

function deletePost(postid) { 
$.post('delete_post.php', {id : postid}, function(data){ 
console.log(data); 
}, 'json'); 
} 

PHP:

<?php 

    require_once '...'; 
    if(isset($_POST["id"])) { 
    $data['res'] = 'yes'; 
    echo json_encode($data); 
    } else { 
    header("location: index.php"); 
    } 
    ?> 
0

Существует проблема спасения в следующей части:

onclick="deletePost(<?php echo $_GET["id"]; ?>);" 

Он должен быть, как показано ниже:

onclick="deletePost(<?php echo $_GET['id']; ?>);" 

И вы вторя «Да!», Так что если условие должно быть :

if(data == 'YEAH!') 
+1

Отсутствие экранирования не требуется, внутренний '' '' находится в PHP, внешний - в HTML. ;) –

+0

Конечно, это требует выхода или использования одной кавычки. Весь html является строкой, и onclick внезапно заканчивается, когда встречает совпадающую двойную кавычку – Rajesh

+0

Нет, выход будет «onclick =» deletePost (6); »« например, никаких лишних кавычек нет ... –

0

Вот ваш рабочий код, в вашем AJAX вы делаете «POST» и в вашем PHP файл, используя ваш «GET».

trigger.html

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script type="text/javascript" src="jquery-1.7.1.min.js"></script> 
<script> 
function deletePost(postid) { 
    $.ajax({ 
     type: 'GET', 
     url: "http://localhost/overflow/delete_post.php?id="+postid, 
     success: function(data) { 
      console.log('success:'+data); 
     }, error: function(xhr, status, error){ 
      console.log(xhr.responseText); 
     } 
    }); 
} 
</script> 
</head> 

<body> 

<button class="btn btn-primary" onclick="deletePost(9); return false;">Yes</button> 
</body> 
</html> 

delete_post.php

<?php 
//require_once '...'; 
if(isset($_GET["id"])) { 
    $id = $_GET["id"]; 
    echo "YEAH!"; 
    //do something 
} else { 
    // header("location: index.php"); 
    echo "not set"; 
} 
?> 

Попробуйте это и дайте нам знать вашу проблему в детализированы и ясно. удачи

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