Php 如何从iPhone应用程序中获取html文件的内容(JSON对象)?

Php 如何从iPhone应用程序中获取html文件的内容(JSON对象)?,php,iphone,mysql,json,Php,Iphone,Mysql,Json,我有一个iPhone应用程序,它从php文件中获取响应。此响应生成一个html文件,其中正文包含一个json对象。如何检索此JSON对象 $query = "SELECT username FROM userData WHERE username = '$username'"; $result = mysql_query($query); if (mysql_num_rows($result) > 0) { sendResponse(200, js

我有一个iPhone应用程序,它从php文件中获取响应。此响应生成一个html文件,其中正文包含一个json对象。如何检索此JSON对象

$query = "SELECT username FROM userData WHERE username = '$username'";  
    $result = mysql_query($query);  
    if (mysql_num_rows($result) > 0) { 
        sendResponse(200, json_encode('SUCCESS Notification'));
    } else { 
    $query = "INSERT INTO userData (username,password,email,signup_date) VALUES ('$username','$password','$email','$date')";
    $result=mysql_query($query,$connection) or die (mysql_error()." Kann Tabelle der Datenbank nicht lesen!");
    }  

    function sendResponse ($status = 200, $body ='', $content_type = 'application/json'){
            $status_header = 'HTTP/1.1 ' . $status . ' ' . 'OK';
            header($status_header);
            header('Content-type:' . $content_type);
            echo $body;
        }
这就是我的iphone应用程序中发生的情况:

 NSURLResponse *theResponse =[[NSURLResponse alloc]init];
        NSError *error;
        NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&error];      

         NSDictionary *jsonDictionaryResponse =[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
        NSLog(@"json response = %@", jsonDictionaryResponse);

如果它是格式正确的HTML(带有开始和结束标记),那么您可以使用任何XML解析器,如NSXMLParser或使用解析器来解析HTML

在我看来,您没有在JSON enocded字符串周围添加HTML标记。因此,您可以解析整个响应体。我建议您使用(如果您尚未使用)或

但请注意,在发送json数据时,您应该将MIME类型更改为
application/json
,而
json\u编码字符串是没有意义的

sendResponse(200, json_encode(array('SUCCESS Notification')), 'application/json');

我不确定发送包含JSON的HTML文件的目的,但这不是一个好的做法。HTML是一个文档,JSON是一个数据结构,您现在将其作为文本包含在正文中。你只是在使用来自Response的JSON和“扔掉其余的”吗?因为我同意佩卡改变你的输出。我不确定您对PHP有多熟悉,但您可以将页面的输出更改为任何您想要的内容。只是不要在您请求的php文件中放入任何html,并将输出类型设置为json,如下所示:

header('Content-type:text/json');

否则,您也可以使用正则表达式或Pekka建议的DOM解析器。

您不能更改响应并删除其周围的HTML吗?具体更改什么?我考虑过更改状态代码,但我不确定这是否是一个好的解决方案。。。处理状态代码可以吗?只需输出JSON。为什么您需要HTML?您是否在某处显示它?如果不是的话,用HTML包装JSON是毫无意义和适得其反的…Dave说什么-这有什么意义而不是直接输出纯JSON?好的,是的,这绝对没有意义。。。但是,我还是不能让它工作。我会把密码写进我的问题里。如果有人看一下我会很感激的…我把我的代码贴在了问题上。你能看看php部分是否正确吗?非常感谢…好吧,我不确定你的应用程序是做什么的,但是你没有用真正的JSON对象响应。如果您
json\u编码一个字符串,您将得到一个字符串。您必须对对象或数组进行编码。请在
内容类型:
文本/json之间添加空格。
内容类型:文本/json