2010-03-10 6 views
0

안녕하세요, 도움이 필요합니다. 서버 응답으로 업데이트하는 대신 JQUERY ajax를 사용하여 제출할 HTML 양식이 있어야합니다.이 양식은 색인 페이지 html로 업데이트됩니다.JQuery Ajax 양식 제출이 색인 페이지의 html을 리턴합니다.

양식

<form id="publishimages" action="<?php $_SERVER['PHP_SELF'] ?>" method="post"> 
    <input type="submit" name="publishimages" value="Publish Selected" /> 

</form> 

PHP

if(isset($_POST['publish'])&&$_POST['publish']=="Publish Images"){ 
//array of sections that may be allowed to have multiple images 
$allow_multiple=Array(1 ,7); 
$id=filter_input(INPUT_POST,"id",FILTER_SANITIZE_STRING); 
$section=filter_input(INPUT_POST,"section",FILTER_SANITIZE_STRING); 
//change the string into an array 
$id=explode(",", $id); 
    //use the array as id 
$count=0; 
//ensure only 1 pic is published for other sections which do not need gallery 
if(!in_array($section, $allow_multiple)){ 

$query="UPDATE photos SET publish='0' WHERE publish='1' AND section='$section'"; 

$mysqli->query($query); 
echo $mysqli->error; 
} 
foreach($id as $key=>$value){ 
    $value=(int)($value); 

    if(is_int($value)){ 

$sql="UPDATE photos SET publish='1' WHERE id='$value'"; 

    $result=$mysqli->query($sql); 
    echo $mysqli->error; 
    if($mysqli->affected_rows>0){$count++;} 

    } 

} 
echo "$count images have been set and will now appear in their respective sections"; 
} 

JQUERY는

$('#publishimages').submit(function() { 

    //get selected 
    var section=$(this).siblings("form").find("#imagesection").val(); 
    // inside event callbacks 'this' is the DOM element so we first 
    // wrap it in a jQuery object and then invoke ajaxSubmit 
    var val = []; 
    if($(this).find(':checkbox').length >0){ 
      $(this).find(':checkbox:checked').each(function(i){ 
      val[i] = $(this).val(); 
      }); 
     } 
    if($(this).find(':radio').length >0){ 
      $(this).find(':radio:checked').each(function(i){ 
      val[i] = $(this).val(); 
      }); 
     } 

    $.ajax({ 
     data:"publish=Publish Images&id="+ val + "&section="+ section, 
     type: "POST", 
     url: "phpscripts.php", 
     success: function(msg){$("#notice").html(msg) 
         } 
     // !!! Important !!! 
     // always return false to prevent standard browser submit and page navigation 
    }); 
    return false; 
}) 

이 무엇 서버 RESPO입니다 NSE는 데이터베이스에 삽입하더라도, 모양 및 PHP와 함께 내가 원하는 와트를 수행

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 

"http://www.w3.org/TR/html4/loose.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 

    <title></title> 
    <link type="text/css" rel="stylesheet" href="css/admin.css" /> 
    <script type="text/javascript" src="../scripts/jquery.js"></script> 
    <script type="text/javascript" src="jscripts/jquery.MultiFile.js"></script> 
    <script type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script> 
    <script type="text/javascript" src="jscripts/sitescript.js"></script> 
</head> 
    <body> 
    <div class="logd_div"><span class="logd">You are logged as <span>admin</span></span>&nbsp;|&nbsp:<a href="index.php?page=changepwd">Change Password</a>&nbsp;|&nbsp; <a href="logout.php">Sign Out</a></div> 
       <div class="admincontent"> 

퀘스트 왜 내 서버 응답은 전체 페이지 html이 아니라 PHP에서 반향을 일으키는 응답입니까?

+0

무엇이 당신의 질문입니까? – Jeremy

답변

0

확인할 사항 - 홈 페이지가 #notice에 삽입 된 것을보고 있습니까, 아니면 브라우저가 홈 페이지로 리디렉션 중입니까? 즉, 기본 양식 제출 조치가 취소되는지 여부입니다.

Zend Framework, Wordpress, PHPCake 등과 같은 웹 프레임 워크를 사용하고 계십니까?

EDIT1 : 이것은 비정상적인 문제입니다. 몇 가지 추가 질문 :

  1. phpscripts.php의 전체 코드는 질문에 포함되어 있습니까? 그렇지 않은 경우 조금 더 많은 코드를 포함 시키십시오. phpscripts.php의 상단에 die('this is a test'); : 우리가

  2. 코드의 라인을 넣어보십시오 읽는 것이 쉽게 있도록 StackOverflow.com UI에 <code></code> 태그 사이를에 붙여주십시오. 과정을 반복하고 홈 페이지가 보이는지 또는 this is a test인지 확인하십시오. 후자 인 경우 die() 함수를 몇 줄 아래로 이동하고 반복합니다. 이렇게하면 잘못된 것을 진단하는 데 도움이됩니다. 여전히 붙어 있다면 결과를 게시하십시오.

+0

홈 페이지가 #notice div에 삽입되고 있지 않습니다.업데이트 된 양식이 삽입 된 홈 페이지 아래에 나타납니다. – Hones

+0

어떤 종류의 웹 프레임 워크를 사용하고 있습니까? – Josh

+0

프레임 워크를 사용하고 있지 않습니다. 내 머리글에 코딩하고 있습니다. – Hones

0

감사합니다. Josh. phpscripts.php에 대한 직접 액세스를 막으려 고 시도하는 과정에서 홈 코드로 리디렉션되는이 코드 if(!isset($allowed)){header('Location:index.php');}을 넣었습니다.

도움 주셔서 감사합니다.

+0

기꺼이 도와 드리겠습니다. 초록색 체크 표시를 클릭하여 자신의 답을 수락해야합니다. 그러면 배지를받을 수있을뿐만 아니라 다른 사람들이 귀하의 질문에 답을 받았음을 알리고 더 이상 답을하지 않으려 고합니다. – Josh

관련 문제