2015-03-02 3 views
0

У меня есть эта простая страница, чтобы понять работу ajax, но я не смог выполнить указанный файл php и добиться успеха. Вот код, дополнительные очки для объяснения:Вызов php-скрипта с ajax

HTML страницы:

<html> 
<head> 
    <meta charset="utf-8"> 
</head> 
<body> 
    <button onclick="addToDb()">click me!</button> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1./jquery.min.js"></script> 
    <script src="js/addtodb.js"></script> 
</body> 
</html> 

расслоение плотной сценарий:

function addToDb() 
{ 
    var source = "SoundCloud"; 
    var partyKey = "4"; 
    var id = "0987654321"; 
    //window.alert("check your db"); // this is called as expected 
    jQuery.ajax({ 
     type: 'POST', 
     // correctly finds the script but never executes it 
     url: 'PHP/functionFilter.php', 
     dataType: "json", 
     data: {functionname: 'addSong'}, 
     success: function(response) { window.alert(response); } 
    }); 
}; 

PHP файл:

<?php 
echo "".$_POST['functionname']; 
?> 

примечание я не получаю ошибки.

+0

Мой PHP код теперь выглядит следующим образом. но предполагаемая функциональность еще не достигнута. Я все еще не получаю ответа: '$ anArray; if (isset ($ _ POST ['functionname'])) { $ anArray = array ('message' => $ _POST ['functionname']); else $ anArray = array ('message' => "error"); echo json_encode ($ anArray); ' –

+0

вы уверены, что URL-адрес: 'PHP/functionFilter.php', правильный?. что вы видите в консоли браузера. это запрос получения успеха? каков статус вашего запроса? –

+0

yep, это все, что я получаю с консоли браузера: ** Импорт узлов XUL в документ контента устарел. Эта функция может быть удалена в ближайшее время. jquery-1.7.1.min.js: 3: 0 Использование getPreventDefault() устарело. Вместо этого используйте defaultPrevented. ** Я попытался изменить путь, и тогда он сообщил об ошибке. поэтому я считаю, что он нашел файл –

ответ

0

Вы отправляете свои данные с данными типа «json». Вам нужно будет кодировать свои данные, когда вы эхо.

$array = array("success" => true, "message" => "hello world"); 
echo json_encode($array); 
+0

Это отлично работало, пока я не ввел переменную $ _Post. –

+0

Это потому, что $ _POST сам по себе является массивом. Ваша переменная $ _Post - это всего лишь одно значение. Вам нужно создать ассоциативный массив, как показано в моем примере. Я вижу, вы в конце концов решили это сделать. – Daniel

0

попробовать это на свой код PHP,

<?php 
    echo json_encode(array(isset($_POST['functionname']) ? $_POST['functionname'] : "error")); 
?> 
+0

Пробовал это решение, но он эхо «не определено». –

0

Совокупное решение (ы) к моей проблеме (ы)

$anArray; 
if (isset($_POST['functionname'])) 
{$anArray = array('message' => $_POST['functionname']);} 
else 
{$anArray = array('message' => "error");} 
echo json_encode($anArray);