gpt4 book ai didi

php - 如何从客户端向服务器发送 $.ajax POST 请求

转载 作者:行者123 更新时间:2023-11-28 02:12:50 24 4
gpt4 key购买 nike

我正在开发一个phonegap应用程序,我需要将一些数据从html文件发送到服务器并获得响应的输出。当我将所有文件保存在保存服务器中时,它们就可以工作。当我将文件拆分为客户端和服务器计算机时,它们不起作用,据我所知,它与跨域发布请求有关。下面是我的代码:

客户端:something.html

$(document).ready(function() {
$("#login").click(function(e){

var formData = $("#loginForm").serialize();

$.ajax({
type: "POST",
url: "http://testserver.bscheme.com/rss/login.php",
crossDomain: true,
cache: false,
data: formData,
success: function(txt){
if(txt !=""){
localStorage.setItem("background", txt);
//alert(localStorage.getItem("background"));
document.location.href="logged.html";
}
else
alert("Badly Failed");
}
});

e.preventDefault();
}); });

服务器端:login.php

<?php

include('inc/db.php');

try
{
$userName = mysql_real_escape_string($_POST['username']);
$passcode = mysql_real_escape_string($_POST['passcode']);

if(empty($feedName)!="" && empty($feedUrl)!="") {

$result = mysql_query("SELECT id,email,password FROM user WHERE email = '".$userName."'");
$row = mysql_fetch_array($result);
//echo $userName . $row['email'];
// echo $passcode . $row['password'];
if($row['email']== $userName && $row['password'] == $passcode && $row['email']!= "" && $row['password'] != "") {
echo $row['id'];

}else{
echo "fail";
}
} else {
echo "All fields are mandatory!";
}
}
catch(Exception $e)
{
// normally we would log this error
echo $e->getMessage();
}

我如何允许跨域发布,我知道我必须编辑我的服务器 php 文件,并且我添加了以下代码,但我也不起作用

switch ($_SERVER['HTTP_ORIGIN']) {
case 'http://localhost/rss': case 'https://localhost/':
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type');
break;
}

使用 Firebug 我说我的 $.POST 这就是我的

响应头请求头内容类型 application/x-www-form-urlencoded;字符集=UTF-8接受/

参数application/x-www-form-urlencoded密码asd用户名 qwe来源用户名=qwe&密码=asd

回应

响应始终为空。当所有 html 和 php 都在本地主机或我的测试服务器中时,它就可以工作。我的 php 和 jquery 技能缺乏 atm,所以如果其他人已经问过这个问题,我发现很难理解,我很抱歉重复一遍。为您提供帮助

最佳答案

我必须做出的改变:客户端:something.html

$(document).ready(function() {
$("#login").click(function(e){
var formData = $("#loginForm").serialize();

var username;
var passcode;
username= document.getElementById('username').value;
passcode = document.getElementById('passcode').value;



if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var txt;
txt=xmlhttp.responseText;
//alert(txt);
localStorage.setItem("background", txt);
document.location.href="logged.html";
}
}
xmlhttp.open("GET","http://testserver.bscheme.com/rss/login.php?username="+ username +"&passcode="+ passcode,true);
xmlhttp.send();

});




});

服务器上文件的更改:Login.php

<?php


header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type');


include('inc/db.php');

try
{
$userName = mysql_real_escape_string($_GET['username']);
$passcode = mysql_real_escape_string($_GET['passcode']);

if(empty($feedName)!="" && empty($feedUrl)!="") {

$result = mysql_query("SELECT id,email,password FROM user WHERE email = '".$userName."'");
$row = mysql_fetch_array($result);
//echo $userName . $row['email'];
// echo $passcode . $row['password'];
if($row['email']== $userName && $row['password'] == $passcode && $row['email']!= "" && $row['password'] != "") {
echo $row['id'];

}else{
echo "fail";
}
} else {
echo "All fields are mandatory!";
}
}
catch(Exception $e)
{
// normally we would log this error
echo $e->getMessage();
}

我所要做的就是确保服务器接受所有类型的 header ,并且客户端发送 XMLHttpRequest 并获取 html 响应而不是 $.Ajax();

关于php - 如何从客户端向服务器发送 $.ajax POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16831201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com