2013-05-26 2 views
0

ИТАК им просто изо всех сил проходя JSON с моей JQuery AJAXпростой Ajax с помощью JSON

var values = {"name":$("#folderName").val(),"dir":directory}; 
var valstring = JSON.stringify(values); 
var user = {json:valstring}; 
$.ajax({ 
    url: "makeFolder.php",  
    data:user, 
    cache: false, 
    contentType: false, 
    processData: false, 
    type: "POST", 
    success: function(n) { 
     alert(n); 
     window.location.href=window.location.href; 
    } 
}); 

то в моем PHP

$json = $_REQUEST['json']; 
$json = stripslashes($json); 
$jsonobj = json_decode($json); 
echo $jsonobj->name; 

означает, что это должно работать не так ли? Я, вероятно, делать что-то действительно глупое где-то, я, однако dumbfouded выводит HTML-теги, а не эхо, когда я беру путь все почтовые запросы в моем PHP она работает 100%

+0

даже если вы, ребята, дайте мне другой способ сохранить мои переменные и получить доступ к ним в php, просто нужно заставить это работать – jambuls

+0

Не рекомендуется использовать '$ _REQUEST' в PHP, вместо этого используйте' $ _GET' или '$ _POST'. –

+0

Да, извините, это было origanlly $ _POST его только одна вещь, которую я изменил, пытаясь исправить ее – jambuls

ответ

1

у меня нет достаточной информации, чтобы действительно знать, что вы проблема, но с учетом имеющейся информации, я с подозрением эта строка:

contentType: false 

... согласно jQuery.ajax documentationcontentType аргумент должен быть типа String, так что я не думаю, что false является допустимым значением.

Особенно, так как вы указали также processData: false.

Например, проверить это jsfiddle: http://jsfiddle.net/6JkZk/ Используя что-то вроде поджигатель, вы можете увидеть, что тело запрос Аякса содержит только это:

[object Object] 

Сервер не принимает ваши данные json вообще. Если вы удалите processData: false так, как http://jsfiddle.net/6JkZk/1/, запрос AJAX содержит фактические параметры POST, заданные аргументом data.

Вы должны быть настройки только processData: false, когда вы предоставляете String в data аргумента, или когда объект вы предоставляете имеет toString() метод, например так: http://jsfiddle.net/pDrUX/

+0

nope все еще ломается. Есть ли что-нибудь еще, что я могу загрузить, чтобы сделать мой пример более понятным? – jambuls

+0

Я думаю, что проблема связана как с contentType: false, так и с 'processData: false'. –

+0

@ user1752451 - Я предоставил некоторые ссылки jsfiddle, которые помогут вам понять, что происходит. Поскольку вы указали 'processData: false', jQuery использует метод' toString() 'вашего литерала объекта для заполнения тела запроса AJAX, за исключением того, что метод' toString() 'по умолчанию просто создает строку' [object Object] ' - эффективно отбрасывать ваши данные. –

-1

попробовать это:

var values = '{"name": "' + $("#folderName").val() + '", "dir": "' + directory + '"}'; 
+0

nope все еще ломается – jambuls

0

вы должны stringify весь объект, который вы отправляете на сервер:

var user = JSON.stringify({"json": values}); 
+0

nope, не работает ни – jambuls

+0

Что вы получаете, когда 'print_r ($ _ POST ['json']);'? –

+0

хорошо, потому что я использую ajax и имею оповещение в своем успехе, он выводит кучу html-тегов, например, когда php обычно ломается – jambuls

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