如何在JavaScript中创建同步GET请求?

时间:2017-08-23 06:55:57

标签: javascript php mysql recursion

这是我的代码:

JS代码:



function saveCategories(i){
	var categoriesList=JSON.parse(localStorage.getItem("categoriesList"));
	var code=localStorage.getItem("gameCode");
	
	if(i == categoriesList.length)
		return;
	
	var categoryName=categoriesList[i]['name'];
	var items=categoriesList[i]['items'];
	
	$.get('http://localhost:8080/yourfolder/newCategory.php',{GameCode:code,items:items,CategoryName:categoryName},function(resp)
		{
			saveCategories(i+1);
		});
}




PHP代码:



<?php 
header("Access-Control-Allow-Origin");

$host="127.0.0.1";
$user="root";
$pass="password";
$databaseName="games";

$con=mysql_connect($host,$user,$pass,$databaseName);

if(!$con)
{
	die("Connection failed: ".mysqli_connect_error());
}

$code=$_GET["GameCode"];
$name=$_GET["CategoryName"];
$items=$_GET["items"];

$data=array();
foreach($items as $item)
	$data[]=addcslashes($item);
$data=implode(",",$data);

$sql="INSERT INTO games.categories(code,name,items) VALUES ('$code','$name','$data')";
$result=mysql_query($sql,$con);

echo $result;
?>
	
&#13;
&#13;
&#13; php文件( newCategory.php )应该获取代码,类别名称和类别项,并将它们插入MYSQL db。

saveCategories递归函数应该获取 newCategory.php 文件的foreach类别(在索引i中),但由于某种原因,它会继续进行下一次迭代,而不会从先前的GET请求。

不需要的结果是索引0中的第一个类别未保存在MYSQL数据库中。

感谢您的帮助。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

在您的数据中使用async: false

示例:

 $.ajax({
    url : "/your url",
    type : "get",
    async: false,
    success : function(userStatus) {
       //your logic
    },
    error: function() {

    }
 });

答案 1 :(得分:0)

引用this回答您可以将异步选项指定为false以使用jquery获取同步Ajax请求。你只需要指定

{async:false} 

this文章介绍了如何使用XMLHttpRequest()。