2015-02-13 5 views
0

У меня есть пара фрагментов кода, которые работают правильно, поскольку они передают желаемый результат, но они не работают так, как я бы хотел, чтобы они были в том, что я думаю, что код может быть улучшена.Передача многомерного массива через jQuery AJAX для MYSQL

Как я объясню более подробно через минуту, мой вопрос заключается в том, могу ли я вызвать элемент из многомерного массива по-другому, чем в фрагменте, хотя в этом фрагменте я просто думаю, что это меньше идеала.

функция JQuery AJAX:

jQuery("form.everglades_user_submit").submit(function(event){ 
    event.preventDefault(); 
    var user_submit_data = jQuery(".everglades_user_submit").serialize(); 
    jQuery.ajax({ 
     type: "POST", 
     url: "' . $db_script_location . '", 
     data: {action: "zip_form", action_data: user_submit_data} 
    }).done(function(response){ 
     alert("success. response: " + response); 
    }).fail(function(response){ 
     alert("failure. response: " + response); 
    }); 
}); 

Посылает данные в PHP файл, содержащий запрос MySQL, а затем передает обратно ответ базы данных для предупреждения:

if ($_POST["action"] == "zip_form") { 
    $database_var = mysqli_connect('localhost',/*******************/); 
    if (!$database_var) { 
     die('Could not connect to database. Error: ' . mysqli_error($database_var)); 
} else { 
    $submitted_zip = $_POST["action_data"]; 
    $modified_data = str_replace("user_zip=","", $submitted_zip); 
    echo "submitted: " . $submitted_zip . ". Modified : " . $modified_data; 
    $query = "SELECT * FROM cust_db_fl_sen WHERE rep_zip = '" . $modified_data . "'"; 
    $mysqli_result = mysqli_query($database_var, $query); 
    while($query_result = mysqli_fetch_array($mysqli_result)) { 
     echo 'Query result, only rep district atm: ' . $query_result['rep_dist']; 
    } 
    exit; 
} 

Как вы можете увидеть, что Я сделал это, чтобы взять предоставленные данные и удалить часть, которую я не хочу использовать str_replace(). Я бы настоятельно предпочел, если я мог бы просто позвонить $ modified_data таким образом, но она возвращает недопустимую строку ошибка смещения на «user_zip,» уронить ли я в кавычки или нет:

$modified_data = $_POST["action_data"]["user_zip"]; 

Однако, если я заменю user_zip строка с номером, например 0 или 1, возвращает букву (u или s и т. д.), поэтому кажется, что обрабатывает user_zip = 12345 как литеральную строку, а не пару ключ-> значение, которую я хочу, чтобы она обрабатывалась как ,

Если бы я оценить следующее в ответ на запрос AJAX на основе представления 11111 в текстовом поле формы:

echo $_POST["action_data"]; 

Это приведет с «user_zip = 11111.» user_zip - это ключ, для которого значение 11111 будет стоить, но меня интересует только этот номер, потому что он используется для поиска избранного представителя для почтового индекса на основе запроса к базе данных.

Подводя итог: Подходит ли литерал к строковой обработке с помощью str_replace(), или есть простой способ рассказать код, который мы имеем дело с парой ключ-> значение, или массив или так далее, так что что я могу легко извлечь с помощью моего предпочтительного метода вызова или чего-то подобного?

+0

Использование JSON – Vick

ответ

0

вы должны сначала проверить содержание приходя от клиента, используйте

print_r($_POST["action_data"]); 

проверить, содержит ли он user_zip = 1234 или вы можете использовать взрываются функцию PHP в вашей еще части

формата
else { 
$submitted_zip = explode("=",$_POST["action_data"]); 
$modified_data = submitted_zip[1]; 
echo "submitted: " . $submitted_zip . ". Modified : " . $modified_data; 
$query = "SELECT * FROM cust_db_fl_sen WHERE rep_zip = '" . $modified_data . "'"; 
$mysqli_result = mysqli_query($database_var, $query); 
while($query_result = mysqli_fetch_array($mysqli_result)) { 
    echo 'Query result, only rep district atm: ' . $query_result['rep_dist']; 
} 
exit; 
Смежные вопросы