AJAX POST TO PHP

-4

dataString:

{"feedback_type":"000","error_type":"","textarea":"blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah"}

Я использовал следующий код для публикации на PHP:

// ajax post
$.ajax({
    type: "POST",
    url:  "core/poster.php" ,
    data:  dataString,
    success:function()
    {
        alert("Success!");
    }
});

return false;

И php файл:

<?php

require 'Class_DBOperation.php';
require 'global.php';

// Establish Database Connection
$dbOperation = new class_DBOperation(DBHOST,DBUSER,DBPWD,DBNAME,DBCHARSET);

// Receive dataString
$content=$_POST['feedback_type'];
$run=mysql_query("insert into reports values (NULL, '".$content."')");

?>

Проблема в том, почему $ content пуст? Что мне делать? есть идеи?

  • 1
    Странно использовать имя типа dataString для объекта.
  • 0
    Кстати, <script type = "text / javascript" src = "js / jquery.min.1.4.0.js"> </ script> - это версия jquery, которую я использую.

4 ответа

2

Добавьте ответ в свою функцию успеха и сообщите об этом

$.ajax({
    type: "POST",
    url:  "core/poster.php" ,
    data:  dataString,
    success:function(response)
    {
        alert(response);
    }
});

И в вашем файле poster.php попробуйте добавить следующее к вершине в теге PHP.

ini_set("display_errors", 1);
var_dump($_POST);

Это должно дать вам возможность начать и отладить, что происходит.

  • 0
    firebug сказал мне, что: array (0) {} <br /> <b> Примечание </ b>: неопределенный индекс: тип обратной связи в <b> C: \ Software \ xampp \ htdocs \ poster.php </ b> в строке <b> 16 </ b> <br />
  • 0
    Это будет означать, что $_POST['feedback_type'] не установлено.
0

Вы отправляете строку JSON в качестве строки параметров.

Параметры должны быть отформатированы следующим образом:

foo=bar,foo2=bar2,foo3=bar3 т.д....

Вы можете либо переформатировать строку, чтобы следовать норме:

JS:

var dataString = "feedback_type=000&error_type=&textarea=blahblahblah";

PHP:

echo $_POST['feedback_type']; // 000
echo $_POST['error_type']; // null
echo $_POST['textarea']; // blahblahblah

или вы можете передать строку JSON в качестве параметра POST:

JS:

var jsonObject = {
    "feedback_type" : "000",
    "error_type" : "", 
    "textarea" : "blahblah"
}


var jsonString = '{"feedback_type":"000","error_type":"","textarea":"blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah"}';

// OR

var jsonString = JSON.stringify(jsonObject);

var dataString = "json_string=" + jsonString;

PHP:

// String - suitable for database input
echo $_POST['json_string']; // String: {"feedback_type":"000","error_type":"","textarea":"blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah"}

// Parse into array
$json_array = json_decode($_POST['json_string']);
0

Удалите двойные кавычки для имен параметров

{
   feedback_type: "000",
   error_type: "",
   textarea: "blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah"
}
  • 0
    не работает :( BTW, <script type = "text / javascript" src = "js / jquery.min.1.4.0.js"> </ script> - это версия jquery, которую я использую.
0

Это не является прямым решением, но это может помочь вам выяснить, что не так. Попробуйте сбросить содержимое вашего супер-лобового $ _POST, это сообщит вам, как были получены данные. Попробуйте что-нибудь вроде:

print '<pre>';
print_r ($_POST);
print '<pre>';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню