2012-04-01 3 views
0

Я пытаюсь отправить простой POST в веб-службу, но сервер, похоже, не получает данные POST. Это Аякс:Почему сервер не получает мои данные POST?

popup.js

$.ajax({ 
     url: 'http://www.flags.99k.org/removeFlag.php', 
     type: 'POST', 
     data: "UID=6", 
     dataType: 'json' 
    }).done(function(response) 
    { 
     $('<p />').text('response: ' + response.success).appendTo($('body')); 
    }); 
  • Я ожидаю response.success быть 1, что означало бы, что сообщение было успешно.
  • Я мог бы также получить 0, что означало бы, что mysql_query(...) вернулся неверно.
  • Но вместо этого я получаю -1, а это значит, что isset($_POST['UID']) возвращает false.

.../removeFlag.php

<?php 
    include("DB.php"); // connects and selects database. 
    if(isset($_POST['UID'])) { 
     $sql_removeFlag = "DELETE FROM Flags WHERE UID = " . $_POST['UID'] . ";"; 
     $success = mysql_query($sql_removeFlag); 
     $jsonStr = ("{ \"success\":\"" . $success . "\"}"); 
     echo $jsonStr; 
    } else { 
     echo("{ \"success\": -1 }"); 
    } 
?> 

Я пробовал разные способы форматирования данных ('UID' = 6, {UID: 6}, { 'UID': 6} , ...), но никто не работал.

Ajax запускается из всплывающего окна расширения Chrome Chrome, но я добавил целевой адрес в список разрешений.

manifest.json

{ 
    "name": "Ajax POST", 
    "version": "1.0", 
    "description": "Ajax POST from popup on click.", 
    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    }, 
    "permissions": [ 
     "flags.99k.org/*", 
     "http://flags.99k.org/*", 
     "http://www.flags.99k.org/*" 
    ] 
} 
+0

какая отладка вы пробовали? – dldnh

+0

@ dldnh Я действительно не знаю, что еще попробовать. Я знаю, что вызов ajax проходит, но данные для записи никогда не принимаются. Если я использую GET, а не POST, он отлично работает ... – Shawn

ответ

1

Вы можете использовать json_encode($array) для кодирования массива в JSON.

$response['success'] = $success; 
$jsonStr = json_encode($response); 

Также важно убедиться, что ваш файл ajax php не кеширует ничего.

header("Expires: Thu, 15 Dec 2011 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

выше не может быть ответом, но я надеюсь, что это поможет предотвратить возможные ошибки.

+0

Спасибо, это хороший материал. Однако это не решает мою проблему. – Shawn

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