我有一些代码片段正常工作,因为它们传递了所需的结果,但它们没有按照我希望的方式工作,因为我认为代码可以改进。
正如我将在一分钟内更清楚地解释一下,我的问题是我是否能够以与我在片段中不同的方式从多维数组中调用元素,尽管代码片段工作我认为它是不太理想。
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);
});
});
将数据发送到包含MySQL查询的PHP文件,然后将数据库响应传递回警报:
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"];
但是,如果我用一个诸如0或1之类的数字替换user_zip字符串,它会返回一个字母(u或s,依此类推),所以它似乎将user_zip = 12345作为文字字符串处理而不是键 - >值对我希望它被处理为。
如果我根据表单文本字段中提交11111的AJAX请求评估以下内容:
echo $_POST["action_data"];
这将导致“user_zip = 11111”。 user_zip是11111将成为其值的键,但我只对该号码感兴趣,因为这用于根据数据库查询查找邮政编码区的当选代表。
总结一下:文字字符串处理方法是使用str_replace()标准,还是有一种简单的方法来告诉代码我们正在处理一个key->值对,或一个数组,等等,所以我可以使用我喜欢的调用方法或类似方法轻松提取?
答案 0 :(得分:1)
您应首先检查来自客户端的内容,使用
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;