2015-10-21 2 views
3

Я пробовал проблему перед публикацией этого вопроса, но не смог найти решение. Мне нужно отправить строку json в php-файл, но не удалось это сделать, может кто-нибудь помочь с моими проблемами ниже: Я новичок в php и jquery и борется, вам нужно ваше сотрудничество.Отправка данных на PHP с использованием AJAX

У меня есть функция, которая фиксирует данные в текстовом файле:

function updateVal() { 
var node_list = document.getElementsByTagName('input'); 
var c = 0; 
var fieldName = []; 
var fieldText = [] 
var ID = []; 
for (var i = 0; i < node_list.length; i++) { 
    var node = node_list[i]; 
    if (node.getAttribute('type') == 'text') { 
     fieldName[c] = node.name; 
     fieldText[c] = node.value; 
     ID[c] = node.id; 
     c++; 
    } 
} 
var postData = { 
    fieldName: fieldName, 
    fieldText: fieldText, 
    ID: ID 
}; 
var dataString = JSON.stringify(postData); 


console.log(JSON.stringify(postData)); 
$.ajax({ 
     type: "POST", 
     dataType: "json", 
     url: "update.php", 
     data: {myData:postData} 
     }) 

//return JSON.stringify(postData); 
} 

Мой update.php как это:

<?php 
$json = $_POST['json']; 
$result = json_decode($json); 

echo $result; 
echo $_POST['myData']);?> 

При загрузке этого: я получаю следующее сообщение об ошибке:

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Кроме того, я не уверен, что данные отправляются на php или нет. Могут ли эксперты pls утверждать.

+0

Попробуйте данные: JSON.stringify (postData), ' – Tushar

+0

@Tushar Не работает. Только внутренняя ошибка сервера, говорящая, что не может декодировать значение – user4943236

+1

Попробуйте «contentType:» application/x-www-form-urlencoded; charset = UTF-8 ', data: {json: JSON.stringify (postData), ' – Tushar

ответ

3

500 (внутренняя ошибка сервера) означает, что на стороне сервера что-то пошло не так. Таким образом, проверьте журнал ошибок Apache для получения более подробной информации

вы можете найти апачский журнал здесь /var/log/apache2/

1

у прокомментировали брекеты закрытия функции с обратным утверждением. изменить это:

//return JSON.stringify(postData);} 

к:

//return JSON.stringify(postData); 
} 

Также:

data: JSON.stringify(postData), 

В update.php

$json = $_POST['myData']; 
$result = json_decode($myData); 

var_dump($result); 
+0

извините, это была опечатка, обновил мой вопрос, чтобы отразить изменение – user4943236

+0

Я понятия не имею, что это касается внутренней ошибки сервера –

+0

ini_set ("display_errors", "1"); error_reporting (E_ALL); u можете попробовать поместить их для проверки на наличие ошибок. или проверить журнал ошибок apache – Nero

2

На стороне клиента (JavaScript код):

data: JSON.stringify(postData) 

На стороне сервера (PHP-код):

json_decode($_POST["data"]) 
0

Комментарий от @Tushar помог мне решить вопрос

contentType: 'application/x-www-form-urlencoded; charset=UTF-8', data: {json: JSON.stringify(postData) 
0

послал запрос Ajax на PHP страницу, чтобы получить данные

$.ajax({ method: "POST", // it may be Get url: "some.php", //page where you sent request data: { name: "John", location: "Boston" } //attibutes you want to take on that page }) .done(function(msg) { // sucessfull reponse alert("Data Saved: " + msg); });