我有一个问题,涉及从iOS应用程序发送POST请求到用php编写的Web服务,最终将查询MySQL数据库。
tldr:如何直接在浏览器窗口中查看POST变量的内容而不刷新?
长版:
我在Xcode中编写了我的Swift代码,包括NSURLSession,请求,数据等。
我将php网页设置为var_dump($_POST);
,以便我可以检查数据是否正确发送(我的数据是Xcode中的硬编码字符串,用于测试目的)。
我不能为我的生活弄清楚为什么我一直得到空的POST
变量,直到我决定在绑定POST
变量的网页上添加测试查询语句。瞧,查询运行成功,我的表更新了。
我现在意识到我认为POST
变量为空的原因是因为我正在刷新网页以查看我的var_dump
的结果。我现在也知道这是删除POST
数据,因为当我用查询语句重复此操作时,我的表获得了NULL
行。
我的问题是如何直接在浏览器窗口中查看POST
变量的内容,而不刷新?我知道这一定是一个真正的菜鸟追逐我自己领导...但我是一个菜鸟。
谢谢
答案 0 :(得分:0)
您需要修改服务本身以某种方式输出这些值。如果这是严格的调试,那么最好将服务写入日志文件。如果这是请求应用程序调用的一部分并且需要向用户显示数据,则服务应该返回应用程序可以解析的XML或JSON字符串响应。否则,您可以使用Fiddler来监控您的网络流量。
答案 1 :(得分:0)
当然加班你刷新页面就得到一个空变量。 这是我用来测试我的代码是否正常工作的原因:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
testPost() // this function will test that the code is sending the variable to your server
return true
}
func testPost() {
let variableToPost = "someVariable"
let myUrl = NSURL(string: "http://www.yourserver.com/api/v1.0/post.php")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let postString = "variable=\(variableToPost)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request)
{ data, response, error in
if error != nil {
print(error)
return
}
do{
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
if let parseJSON = json{
let result = parseJSON["status"] as? String
let message = parseJSON["message"] as? String
if result == "Success"{
//this should return your variable
print(message)
}else{
// print the message if it failed ie. Missing required field
print(message)
}
}//if parse
} catch let error as NSError {
print("error in registering: \(error)")
} //catch
}
task.resume()
}
那么你的php文件只会检查是否没有空帖并将变量作为JSON返回: 的 post.php中强>
<?php
$postValue = htmlentities($_POST["variable"]);
if(empty($postValue))
{
$returnValue["status"] = "error";
$returnValue["message"] = "Missing required field";
echo json_encode($returnValue);
return;
} else {
$returnValue["status"] = "success";
$returnValue["message"] = "your post value is ".$postValue."";
echo json_encode($returnValue);
}