2016-10-18 35 views
1

發送JSON數據我想從選項選擇通過AJAX

<select id="city"> 
    <option value="{'city':'melbourne','lat':'-37.8602828','long':'144.9631'}">Melbourne</option> 

發送數據通過Ajax POST

$.ajax({ 
    method: "POST", 
    url: "action.php", 
    dataType: "json", 
    data: { 
     city: $('#city option:selected').val() 
    }, 
}) 

但是我在action.php有一個空$_POST。通過AJAX請求發送選定選項的值的正確方法是什麼?

+2

是價值{ '城市': '墨爾本', 'LAT': ' - 37.8602828', '長': '144.9631'}」有效對於價值標籤? – toha

+0

首先你缺少等於和雙重報價的選項值。 第二:你可以打印'$('#城市選項:選中').val()',讓我們知道控制檯打印什麼對於這個? – KinjalMistry

+0

我讀了另一個stackoverflow頁面,它的一個有效的值標籤。(頁面丟失) –

回答

1

你有一個失蹤="在期權價值屬性

<select id="city"> 
    <option value="{'city':'melbourne','lat':'-37.8602828','long':'144.9631'}">Melbourne</option> 

此外,您可以直接訪問選擇值:

$.ajax({ 
    method: "POST", 
    url: "action.php", 
    dataType: "json", 
    data: { 
     city: $('#city').val() 
    }, 
}) 

在PHP的水平,你必須將值解碼$_POST['city']得到一個映射的PHP陣列:

$city = json_decode($_POST['city']); 
0

C你烏爾德請嘗試修改您的HTML有點爲:

<option value='{"city":"melbourne","lat":"-37.8602828","long":"144.9631"}'>Melbourne</option> 

value屬性值是單引號和JSON數據的鍵值對內是雙引號。

此外,一旦您通過.val()獲取所選值,我們實際上在發送它之前獲取類型爲string的數據;你需要通過$.parseJSON(str_value)

$(document).ready(function() { 
 
    var str_value = $('#city option:selected').val(); 
 
    alert(str_value); 
 
    alert("typeof str_value: " + typeof str_value); 
 
    var jsonData = $.parseJSON(str_value); 
 
    console.log(jsonData); 
 
    alert("city " + jsonData["city"]); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<select id="city"> 
 
    <option value='{"city":"melbourne","lat":"-37.8602828","long":"144.9631"}'>Melbourne</option> 
 
    <option value='{"city":"melbourne1","lat":"-37.8602828","long":"144.9631"}'>Melbourne1</option> 
 
</select>

解析它