2013-05-26 78 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

在PHP中不使用'$ _REQUEST'是個好主意,而是使用'$ _GET'或'$ _POST'。 – 2013-05-26 15:28:51

+0

是啊,對不起,這是origanlly $ _POST它只是我試圖修復它的一個變化 – jambuls

回答

1

我沒有足夠的信息來真的知道自己在做什麼的問題是,但鑑於現有的資料,我懷疑這一行:

contentType: false 

...根據jQuery.ajax documentationcontentType參數應該是String類型的,所以我不認爲false是一個可接受的值。

特別是因爲您還指定processData: false

例如,看看這個的jsfiddle:http://jsfiddle.net/6JkZk/使用像螢火蟲,你可以看到,AJAX請求的身體只包含此:

[object Object] 

服務器未收到您的json數據在所有。如果刪除processData: false,就像http://jsfiddle.net/6JkZk/1/一樣,AJAX請求包含使用data參數指定的實際POST參數。

您應該只設置processData: false,當你提供Stringdata爭論,或者當您提供對象具有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

您必須字符串化要發送到服務器的整個對象:

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

nope,does not work要麼 – jambuls

+0

當'print_r($ _ POST ['json']);''? – 2013-05-26 15:33:18

+0

很好cuz即時通訊使用ajax,並在我的成功有一個警告聲明,它會輸出一堆html標籤,就像php一般打破 – jambuls